numpy数组中元素的乘法和除法给出整数结果

Posted

技术标签:

【中文标题】numpy数组中元素的乘法和除法给出整数结果【英文标题】:Multiplication and Division of elements in a numpy array gives integer results 【发布时间】:2017-11-04 02:06:55 【问题描述】:
import numpy as np
A = np.array([[2,1,-1,8],
         [-3,-1,2,-11],
         [-2,1,2,-3]])

B =  A[1]+A[0]* (-A[1][0]/A[0][0])
print(B) #B =[ 0.   0.5  0.5  1. ]
A[1] = A[1]+A[0]* (-A[1][0]/A[0][0])
print(A[1]) #A[1] = [0 0 0 1]

上述情况是怎么发生的,我该怎么办?

【问题讨论】:

你期望得到什么? 您的问题是什么?寻求调试帮助的问题应包括所需的行为以及输入和所需输出的示例。 A 是 dtype 整数。将浮点值分配给这样的数组会截断它们。尝试从 float dtype 数组开始(例如 A = ...([[2., 1, ...]...`) 真的应该编辑这个问题的标题才有意义。 @rayryeng 谢谢! 【参考方案1】:

在主数组中使用dtype=float。您的数组默认为整数。

import numpy as np
A = np.array([[2,1,-1,8],
         [-3,-1,2,-11],
         [-2,1,2,-3]], dtype=float)
B =  A[1] + (A[0]*(-A[1,0]/A[0,0]))
print(B)
A[1] = A[1] + (A[0]*(-A[1,0]/A[0,0]))
print(A[1])
#Output:
#[ 0.   0.5  0.5  1. ]
#[ 0.   0.5  0.5  1. ]

【讨论】:

您能否编辑您的答案以使用正确的二维数组索引,A[0, 1]

以上是关于numpy数组中元素的乘法和除法给出整数结果的主要内容,如果未能解决你的问题,请参考以下文章

Python的Numpy库中各种矩阵基本运算的示例代码(加减乘点乘点除乘方转置等)

仅使用O(lgβ)乘法和除法将β位整数转换为数字数组

加速python中的元素数组乘法

题目:大整数乘法除法,楼梯走法,数组中不同数字,超过一半数字(好)

查找产品的最大值以及数组中元素的求和、减法和除法

浮点数的乘法在 Numpy 和 R 中给出不同的结果