我有2d numpy数组(认为灰度图像)。我想给这个数组的一个坐标列表赋值,这样:
img = np.zeros((5, 5))
coords = np.array([[0, 1], [1, 2], [2, 3], [3, 4]])
def bad_use_of_numpy(img, coords):
for i, coord in enumerate(coords):
img[coord[0], coord[1]] = 255
return img
bad_use_of_numpy(img, coords)
字符串
这是可行的,但我觉得我可以利用numpy功能来使它更快。我也可能有一个用例,稍后到类似以下内容:
img = np.zeros((5, 5))
coords = np.array([[0, 1], [1, 2], [2, 3], [3, 4]])
vals = np.array([1, 2, 3, 4])
def bad_use_of_numpy(img, coords, vals):
for coord in coords:
img[coord[0], coord[1]] = vals[i]
return img
bad_use_of_numpy(img, coords, vals)
型
有没有更矢量化的方法?
1条答案
按热度按时间p1tboqfb1#
我们可以将
coords
的每一行解压缩为row,col索引,然后分配到img
中。现在,由于问题已标记:
Python 3.x
,我们可以简单地用[*coords.T]
解包,然后赋值-字符串
一般来说,我们可以使用
tuple
来解包-型
我们还可以计算线性索引,然后用
np.put
赋值。型