将数组中的值替换为numpy.random.norm编号

2024-04-19 00:58:52 发布

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

我有以下数组:

myArray1 = np.array([[255, 255, 255,   1,   1, 255, 255, 255],
                     [255,   1,   1,   1,   1,   1, 255, 255]])

我想基于myArray1创建一个新数组myArray2。其中myArray1的值为1,我想用numpy.random.normal(loc=40, scale=10)替换该值。 我该怎么做?你知道吗


Tags: numpynprandom数组arraylocnormalscale
2条回答

如果您的数组被称为a,您可以

b = a == 1
a[b] = numpy.random.normal(loc=40, scale=10, size=b.sum())

这避免了Python循环,并利用了Numpy的性能。你知道吗

第一行创建一个布尔数组,其形状与a相同,即在所有与a中的条目对应的条目中True。第二行使用advanced indexing with this Boolean array仅将新值赋给bTrue的位置。你知道吗

像这样的list comprehension怎么样:

[i if i != 1 else numpy.random.normal(loc=40, scale=10) for j in myArray1 for i in j]

j循环遍历myArray1的每一行,i循环遍历该行的每一个元素。你知道吗

相关问题 更多 >