Python 3.x Numpy没有将正确的数组插入多维数组
我有一个矩阵Python 3.x Numpy没有将正确的数组插入多维数组,python-3.x,numpy,Python 3.x,Numpy,我有一个矩阵 M = np.array([ [1, -2, -2, -2, 1, 2], [0, 3, -2, -3, 1, 3], [3, 0, 0, 1, -1, 2], [3, -3, -2, 0, 1, 1], [0, -3, 3, -3, -3, 2] ]) 我试图将第一行本身替换为某个数字的模N=2497969412496091 我已经在IDE中玩了一段时间了,尽管 >>> M[0] % N array([1, 24979694124960
M = np.array([
[1, -2, -2, -2, 1, 2],
[0, 3, -2, -3, 1, 3],
[3, 0, 0, 1, -1, 2],
[3, -3, -2, 0, 1, 1],
[0, -3, 3, -3, -3, 2]
])
我试图将第一行本身替换为某个数字的模N=2497969412496091
我已经在IDE中玩了一段时间了,尽管
>>> M[0] % N
array([1, 2497969412496089, 2497969412496089, 2497969412496089, 1, 2], dtype=int64)
在我执行M[0]=M[0]%N
并打印矩阵M
之后,我得到
>>> M[0]
array([1, -746726695, -746726695, -746726695, 1, 2])
我还尝试在临时变量中复制中间步骤
M[0]%N
,然后将其设置为等于M[0]
,但问题仍然存在。这里发生了什么?您的数组是np.int32
:
print(type(M[0][0])) # <class 'numpy.int32'>
输出:
[[ 1 2497969412496089 2497969412496089 2497969412496089 1 2]
[ 0 3 -2 -3 1 3]
[ 3 0 0 1 -1 2]
[ 3 -3 -2 0 1 1]
[ 0 -3 3 -3 -3 2]]
谢谢,在指定
dtype=np.int64
后,它似乎工作正常。我刚刚阅读了numpy.array
的文档,它说默认的数据类型基于保存对象所需的最小类型,但是当我只执行M[0]%N
时,它怎么会输出正确的答案呢,甚至显示dtype=int64
?@Lig,因为您创建了一个新数组,其中的数字不适合int32,所以它将其创建为int64。将其重新签名到旧数组不会更改其数据类型,因此会导致整数溢出
[[ 1 2497969412496089 2497969412496089 2497969412496089 1 2]
[ 0 3 -2 -3 1 3]
[ 3 0 0 1 -1 2]
[ 3 -3 -2 0 1 1]
[ 0 -3 3 -3 -3 2]]