【发布时间】:2021-04-13 13:00:33
【问题描述】:
假设我有一个 numpy ndarray
[[2, -7, 5], [-6, 2, 0] [1, -4, 2], [-2, 6, 8]]
如何获得一个所有负元素都被 0 替换的 numpy nd 数组:
[[2, 0, 5], [0, 2, 0] [1, 0, 2], [0, 6, 8]]
感谢您宝贵的时间。
【问题讨论】:
标签: python numpy numpy-ndarray
假设我有一个 numpy ndarray
[[2, -7, 5], [-6, 2, 0] [1, -4, 2], [-2, 6, 8]]
如何获得一个所有负元素都被 0 替换的 numpy nd 数组:
[[2, 0, 5], [0, 2, 0] [1, 0, 2], [0, 6, 8]]
感谢您宝贵的时间。
【问题讨论】:
标签: python numpy numpy-ndarray
您可以为此使用np.clip,在零和无穷大之间进行剪辑:
arr = np.array([[2, -7, 5], [-6, 2, 0], [1, -4, 2], [-2, 6, 8]])
np.clip(arr, a_min = 0, a_max = np.inf)
array([[2., 0., 5.],
[0., 2., 0.],
[1., 0., 2.],
[0., 6., 8.]])
否则,你可以使用这样的东西(注意这会改变数组):
arr[arr <= 0] = 0
>>> arr
array([[2, 0, 5],
[0, 2, 0],
[1, 0, 2],
[0, 6, 8]])
【讨论】:
你也可以使用np.where():
arr = np.array([[2, -7, 5], [-6, 2, 0], [1, -4, 2], [-2, 6, 8]])
result = np.where(arr<0, 0, arr)
输出:
[[2 0 5]
[0 2 0]
[1 0 2]
[0 6 8]]
【讨论】: