Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对数字进行平方运算时出现奇怪的错误_Python_R_Numpy_32 Bit - Fatal编程技术网

Python 对数字进行平方运算时出现奇怪的错误

Python 对数字进行平方运算时出现奇怪的错误,python,r,numpy,32-bit,Python,R,Numpy,32 Bit,和我之前的其他人一样,我正在尝试从R转换到Python。为了做到这一点,我只是尝试在Python中复制简单的任务,以便对代码有信心 我试图用Python创建一个非常简单的循环 代码如下: import numpy as np import matplotlib as mp k=np.repeat(0, 100000, axis=0) for x in np.arange(1,100001,1): k[x-1]=(x**2) mp.pyplot.plot(k) 输出就是这个 这看起来很

和我之前的其他人一样,我正在尝试从R转换到Python。为了做到这一点,我只是尝试在Python中复制简单的任务,以便对代码有信心

我试图用Python创建一个非常简单的循环

代码如下:

import numpy as np
import matplotlib as mp
k=np.repeat(0, 100000, axis=0)
for x in np.arange(1,100001,1):
    k[x-1]=(x**2)
mp.pyplot.plot(k)
输出就是这个

这看起来很奇怪,我只是将正数平方,为什么会得到负值

在这里,同样的任务在R

k<-rep(0,100000)
for (i in 1:100000){
k[i]<-i^2
}
plot(k,type="l")

k因为整数溢出

Numpy假设数组中的所有元素都是
int32
,因此当平方时,一些元素会溢出:

k = np.repeat(0, 100000, axis=0)
print(k.dtype)
# int32
for x in np.arange(1, 100001, 1):
    k[x - 1] = (x ** 2)
print(k[k < 0])
# [-2147479015 -2147386332 -2147293647 ...,     -537551     -352192 -166831]
产生


我无法复制您的问题-我看到的曲线与您的R示例相同。你可以用
k=np.arange(1100001,1)**2更容易地创建
k
,我不知道它是否有用,但我正在anaconda DistributionTanks上使用spyder,如何创建浮点向量?我有一个64位版本的Python 3.6.4 | anaconda custom(64位)|(默认,2018年1月16日,10:22:32)[MSC v.1900 64位(AMD64)]类型“版权”、“信用证”或“许可证”以获取更多信息。IPython 6.2.1——一个增强的交互式Python.1,即使代码为k=np。重复(0,100000,axis=0)。np.arange(1100001,1)中x的astype(float):k[x-1]=(x**2)mp.pyplot.plot(k)@MarcoDeVirgilis将我的更新答案视为一个有效的解决方案和一个更高效的代码
k = np.array(range(1, 100001), dtype=np.int64) ** 2 
# or k = np.arange(1, 100001, 1, dtype=np.int64) ** 2
mp.pyplot.plot(k)