如果我有一个NxN numpy数组并且如果有任何位置的负数,是否有一个简单而快速的方法我可以用0替换该数字?
之类的东西for item in array:
if item <= 0:
item = 0
答案 0 :(得分:7)
你可以使用布尔掩码来掩盖整个数组,这比你现在的迭代效率要高得多:
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. ]])
答案 1 :(得分:2)
基于https://github.com/amerine/acts_as_tree/blob/master/lib/acts_as_tree.rb,您可以使用numpy
的内置索引。
arr[arr < 0] = 0