Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据两个不同数组的值填充Numpy数组_Python_Arrays_Numpy - Fatal编程技术网

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

Python 根据两个不同数组的值填充Numpy数组,python,arrays,numpy,Python,Arrays,Numpy,我有两个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): fo

我有两个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) 

请尝试以下代码:

C = np.zeros(shape=A.shape)
C = (A>128)*np.maximum(A,B)+(A<=128)*np.minimum(A,B)
C=np.zero(shape=A.shape)

C=(A>128)*np.maximum(A,B)+(APythons-min/max函数在numpy-ndarray上似乎无法按元素运行(这似乎是您正在寻找的)

您应该能够使用np.maximum和np.minimum

C[A>128] = np.maximum(A,B)[A>128]
C[A<=128] = np.minimum(A,B)[A<=128]
C[A>128]=np.最大值(A,B)[A>128]

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

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

毫无疑问,它是这项工作的正确工具。除非其他人使用变通方法,否则它就是为此而设计的。
max
是Python标量函数。我认为您需要
np.max(A,B)
,一个元素级的最大值。
С = np.where(A>128, np.maximum(A,B), np.minimum(A,B))