我有一个包含整数值的numpy数组。如果我将整个矩阵乘以一个浮点数,结果就是一个浮点数矩阵,但是如果我通过for循环逐列相乘,它只给出整数部分
import numpy as np
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
B = A
print("Multiplication as a whole matrix:")
A = 0.5*A
print(A)
for i in range(A.shape[1]):
B[:,i] = 0.5*B[:,i]
print("Multiplication column by column:")
print(B)
如果我仅将矩阵的一个元素更改为浮点数(例如,1到1.0),两种方法都会给出真实的结果。我想知道其根本原因
更改整个数组。当解释器调用
A.__rmul__(0.5)
时,它会看到0.5
是一个float
,从而创建一个新的A
和dtype = float
现在,我们试着逐段读回
B
。但是,即使0.5*B[:, i]
是一个浮点数组,B
仍然是dtype = int
,因此它将float
强制转换为int
,以适应现有的B
数据结构设置“甚至只有矩阵的一个元素是浮点数”会将整个数组设置为
dtype = float
,然后转换为int
将停止相关问题 更多 >
编程相关推荐