python - numpy 数组的每个元素乘法/加法

标签 python python-3.x numpy slice numpy-ndarray

我遇到了一个奇怪的问题。

有一个图像,我只需要重新计算非零像素。我想通过 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/

相关文章:

python-3.x - 使用 PyPDF2 将字符串写入 pdf

python - np.array[ :, 0] 和 np.array[ :, [0]] 有什么区别?

Python:优化删除在 numpy 数组中未对齐的元素

arrays - 您将如何拆分元素给出分区大小的 numpy 数组?

python - "No module named ' _<module> '"导入带有嵌入式 Python 的 SWIG 模块时

python - 在python中根据时间戳对字典进行排序

python - seaborn FacetGrid 图中时间数据的设置

python - 从字典初始化对象。附加到列表时覆盖值

python - Gdb Python API - 获取 PC 值(value)的最有效方法?

python - Google 日历 V3 和命令行应用程序