2024-04-19 00:58:52 发布
网友
我有以下数组:
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)替换该值。 我该怎么做?你知道吗
myArray1
myArray2
numpy.random.normal(loc=40, scale=10)
如果您的数组被称为a,您可以
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仅将新值赋给b为True的位置。你知道吗
True
b
像这样的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循环遍历该行的每一个元素。你知道吗
j
i
如果您的数组被称为
a
,您可以这避免了Python循环,并利用了Numpy的性能。你知道吗
第一行创建一个布尔数组,其形状与
a
相同,即在所有与a
中的条目对应的条目中True
。第二行使用advanced indexing with this Boolean array仅将新值赋给b
为True
的位置。你知道吗像这样的list comprehension怎么样:
j
循环遍历myArray1
的每一行,i
循环遍历该行的每一个元素。你知道吗相关问题 更多 >
编程相关推荐