我遇到了一个奇怪的问题。
有一个图像,我只需要重新计算非零像素。我想通过 numpy 来完成此操作,因为我处理数千张图像并且需要速度快。
这是一个具有较低维度的简化示例。
假设我有以下矩阵:
[[0, 0, 1],
[0, 2, 0],
[0, 6, 0]]
假设我想将每个值乘以 2.0
并加上 0.5
。
matrix = matrix * 2.0 + 0.5
结果是:
[[0.5, 0.5, 2.5],
[0.5, 4.5, 0.5],
[0.5, 12.5, 0.5]]
我希望它是:
[[0, 0, 2.5],
[0, 4.5, 0],
[0, 12.5, 0]]
显然,我可以在 for
循环中使用 if Pixel == 0: continue
来完成此操作,但速度会非常慢。而且我无法去掉添加项,只留下标准化组件。
所以我一直想知道,可以通过numpy
来完成吗?
最佳答案
您可以使用np.where
为了根据指定条件选择 x 或 y:
a = np.array([[0, 0, 1],
[0, 2, 0],
[0, 6, 0]])
np.where(a!=0, a*2. + 0.5, a)
array([[ 0. , 0. , 2.5],
[ 0. , 4.5, 0. ],
[ 0. , 12.5, 0. ]])
关于python - numpy 数组的每个元素乘法/加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55335612/