我有以下数组:
myArray1 = np.array([[255, 255, 255, 1, 1, 255, 255, 255],
[255, 1, 1, 1, 1, 1, 255, 255]])
我想基于myArray2
创建一个新的数组myArray1
。如果myArray1
的值为1,我想将值替换为numpy.random.normal(loc=40, scale=10)
。
我怎么能这样做?
答案 0 :(得分:2)
如果您的阵列被称为a
,则可以执行
b = a == 1
a[b] = numpy.random.normal(loc=40, scale=10, size=b.sum())
这可以避免Python循环并利用Numpy的性能。
第一行创建一个布尔数组,其形状与a
相同,在True
的所有条目中都是a
。第二行使用advanced indexing with this Boolean array仅将新值分配给b
为True
的地方。
答案 1 :(得分:1)
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
循环遍历行的每个元素。