如果我有一个NxN的numpy数组,并且在任何位置上都有一个负数,那么有没有一种简单快捷的方法可以将该数字替换为0?类似于:
for item in array:
if item <= 0:
item = 0
In [41]:
array = np.random.randn(5,3)
array
Out[41]:
array([[-1.09127791, 0.51328095, -0.0300959 ],
[ 0.62483282, -0.78287353, 1.43825556],
[ 0.09558515, -1.96982215, -0.58196525],
[-1.23462258, 0.95510649, -0.76008193],
[ 0.22431534, -0.36874234, -1.46494516]])
In [42]:
array[array < 0] = 0
array
Out[42]:
array([[ 0. , 0.51328095, 0. ],
[ 0.62483282, 0. , 1.43825556],
[ 0.09558515, 0. , 0. ],
[ 0. , 0.95510649, 0. ],
[ 0.22431534, 0. , 0. ]])
根据这个SO答案,您可以使用numpy
的内置索引来实现此目的。
arr[arr < 0] = 0
0
替换0
。唯一的区别可能是如果数组有浮点数,并且一些0
带有“负号”,而其他一些带有正号,通过分配0
,您将所有这些数字都设置为“正号”,但我相信所有操作应该都是相同的。 - Bakuriu<0
和<=0
之间存在语义差异。无论最终结果如何,负数语句明确表示<0
表示负数,而<=0
则不表示。 - EdChum