numpy高效数组乘法

时间:2014-10-02 20:43:14

标签: python arrays image-processing numpy

我有一个形状为[1200,1600,3]的三维数组img和一个形状为[1200,1600]的二维数组标签。第一个数组来自图像,第二个数组来自图像中的标签。 img阵列中的位置[i,j]对应于图像像素。 我想创建一个与img数组相同维度的新数组,这样对于标签为0的像素,原始数组不变,但所有其他像素都变白(255,255,255)。

我使用的代码是:

 import numpy as np

 newimg=np.zeros((img.shape[0],img.shape[1],img.shape[2]))
 for i in range(0,img.shape[0]):
     for j in range(0,img.shape[1]):
          if labels[i][j]==0:
             newimg[i][j]=img[i][j]
     else:
         newimg[i][j]=np.array([255,255,255])

有更快的方法吗?

1 个答案:

答案 0 :(得分:3)

一般来说,你会做类似的事情:

newimg = img.copy()
newimg[labels != 0, :] = 255

或者:

newimg = np.where(labels[..., None] != 0, img, 255)