我有一个包含整数值的 numpy 数组。如果我将整个矩阵乘以一个 float ,结果是一个浮点矩阵,但如果我通过 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)
如果我只将矩阵的一个元素更改为 float (例如 1 到 1.0),这两种方法都会给出真实的结果。我想知道其中的根本原因。
最佳答案
A = 0.5*A
改变整个数组。当解释器调用 A.__rmul__(0.5)
时,它看到 0.5
是一个 float
并因此创建一个新的 A
与 dtype = float
for i in range(A.shape[1]):
B[:,i] = 0.5*B[:,i]
现在,我们尝试分段回读B
。但是即使 0.5*B[:, i]
是一个 float 数组,B
仍然是 dtype = int
,所以它转换 float
到 int
以适应现有的 B
数据结构。
设置“即使只有矩阵的一个元素为 float ”也会将整个数组设置为 dtype = float
,然后转换为 int
将停止。
关于python - 整数 numpy 数组乘以 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64753403/