python - 整数 numpy 数组乘以 float

标签 python numpy

我有一个包含整数值的 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 并因此创建一个新的 Adtype = float

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

现在,我们尝试分段回读B。但是即使 0.5*B[:, i] 是一个 float 数组,B 仍然是 dtype = int,所以它转换 floatint 以适应现有的 B 数据结构。

设置“即使只有矩阵的一个元素为 float ”也会将整个数组设置为 dtype = float,然后转换为 int 将停止。

关于python - 整数 numpy 数组乘以 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64753403/

相关文章:

python - 在 Python 中计算多元回归的残差范数

python - 基于 cumsum 和 timediff 创建标志

python - 在 Google App Engine 上运行的 Python 中从 Facebook 中提取关系状态

python - 反转字母表

python - 沿轴组合数组

python - numpy数组中小于(<)运算符的作用是什么?

python - matplotlib 忽略缺失数据

python - 减少(键,值),其中值是 Spark 中的字典

python - 使用 Selenium 和 ng-file-upload 自动上传文件

python - 迭代迭代器对象中的 "1 or more"元素?