为什么我在数组中添加np.random.normal()到每个元素时得到整数?



当我运行这段代码

import numpy as np
y = np.arange(1,11)
for i in range(len(y)):
y[i] = y[i] + np.random.normal()
print(y)
我得到了输出
[ 2  1  2  3  2  6  6  7 10 10]

为什么y中的所有数字都转换为整数?np.random.normal()显然返回浮点数

就像您的示例中的y数组隐式地设置为dtype=int一样。因此,在执行y[i] = y[i] + np.random.normal()时,相当于int = int + float;也就是说,在存储float之前,必须将其类型转换为int

您可以通过在创建numpy数组时手动指定dtype来绕过此问题。

import numpy as np
y = np.arange(1, 11, dtype=float)
for i in range(len(y)):
y[i] = y[i] + np.random.normal()
print(y)
# Sample output: [ 2.16400377  1.5604771   2.69698066  4.17251939  4.13071869  5.99501597  7.06189783  7.69103035 10.51589948 10.31083259]

尝试一下,y[]的dtype似乎是int32,并且当元素被修改时它不会改变。

相关内容

最新更新