整数numpy数组与浮点数的乘积

2024-10-10 16:23:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含整数值的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),两种方法都会给出真实的结果。我想知道其根本原因


Tags: importnumpyforasnpcolumn矩阵整数
1条回答
网友
1楼 · 发布于 2024-10-10 16:23:55
A = 0.5*A

更改整个数组。当解释器调用A.__rmul__(0.5)时,它会看到0.5是一个float,从而创建一个新的Adtype = float

for i in range(A.shape[1]):
    B[:,i] = 0.5*B[:,i]

现在,我们试着逐段读回B。但是,即使0.5*B[:, i]是一个浮点数组,B仍然是dtype = int,因此它将float强制转换为int,以适应现有的B数据结构

设置“甚至只有矩阵的一个元素是浮点数”会将整个数组设置为dtype = float,然后转换为int将停止

相关问题 更多 >