gpt4 book ai didi

python - 根据两个不同数组的值填充 Numpy 数组

转载 作者:行者123 更新时间:2023-12-01 00:25:00 25 4
gpt4 key购买 nike

我有两个数组 5x5x3:

A = np.random.randint(0, 255, (5,5,3), np.uint8)
B = np.random.randint(0, 255, (5,5,3), np.uint8)

我需要填充第三个数组 C(A 和 B 的形状相同),根据 A 中的值填充 A 或 B 中的值。

纯Python代码应该是:

C = np.zeros(A.shape, dtype=np.uint8) 
h, w, ch = C.shape

for y in range(0, h):
for x in range(0, w):
for z in range(0, ch):
if A[y, x, z] > 128:
C[y, x, z] = max(A[y, x, z], B[y, x, z])
else:
C[y, x, z] = min(A[y, x, z], B[y, x, z])

上面的代码可以工作,但是对于大数组来说速度非常慢。我对 numpy 的尝试如下:

C = np.zeros(A.shape, dtype=np.uint8) 
C[A>128] = max(A,B)
C[A<128] = min(A,B)

但是输出是:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

最佳答案

使用 np.where 可以避免之前创建空数组。 np.maximum、np.minimum 返回与 A 和 B 形状相同的数组。条件 A>128 将从中选择正确的值

С = np.where(A>128, np.maximum(A,B), np.minimum(A,B))

关于python - 根据两个不同数组的值填充 Numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58657021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com