【发布时间】:2020-10-08 23:29:09
【问题描述】:
我有形状为 (X, Y, 4) 的 numpy 数组,其中 X 和 Y 很大。我想在数组的轴 2 上执行以下操作(即每个 x 和 y 的 A[x, y]):对于每个一维向量 A[x, y],如果前 3 个元素中的每一个都是在常数向量 C 中的对应元素的某个距离 d 内,然后将第 4 个元素设置为 0。这就是我使用 Python 循环的方式:
for i in range(X):
for j in range(Y):
if np.all(np.abs(A[i, j, 0:3] - C) <= d):
A[i, j, 3] = 0
显然,这些循环非常慢。我怀疑有一种更快的、基于 ufunc 的方式来执行此操作,但对于我的生活来说,我无法弄清楚如何去做。有人有什么建议吗?
(应用注意:这是为图像添加alpha通道,使接近C的颜色变得透明。)
【问题讨论】:
-
嗨,这可能是题外话,但我想问一个问题。建议使用哪种形状的图像?是
(X, Y, 3)还是(3, X, Y)? -
@mathfux 你最喜欢的库支持的那个
标签: python numpy numpy-ufunc