Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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 根据不同阵列的条件交换2个numpy阵列_Python_Numpy_Array Broadcasting - Fatal编程技术网

Python 根据不同阵列的条件交换2个numpy阵列

Python 根据不同阵列的条件交换2个numpy阵列,python,numpy,array-broadcasting,Python,Numpy,Array Broadcasting,我有4个数组,A,B,C,D。A和B有形状(n,n),C/D有形状(n,n,m)。我试图设置它,当A的元素大于B时,长度m的数组本质上属于C C_new=np.其中(A>B,C,D),D_new=np.其中(AB)[…,np.newaxis],C,D) D_new=np.式中((A

我有4个数组,A,B,C,D。A和B有形状(n,n),C/D有形状(n,n,m)。我试图设置它,当A的元素大于B时,长度m的数组本质上属于C
C_new=np.其中(A>B,C,D)
D_new=np.其中(A
。但是,这给了我一个值错误(
操作数无法与形状一起广播)

我很好奇是否可以在这里使用
where
,而不只是循环遍历每个元素

编辑:示例:

A = np.ones((2,2))
B = 2*np.eye(2)
C = np.ones((2,2,3))
D = np.zeros((2,2,3))
# Cnew = np.where(A > B, C,D)-> ValueError: operands could not be broadcast together with shapes (2,2) (2,2,3) (2,2,3) 

Cnew在(0,0)和(1,1)索引中为零。

您需要在条件末尾添加一个新轴,以便正确广播:

C_new=np.where((A>B)[…,np.newaxis],C,D)
D_new=np.式中((A
请提供一些样本数据和预期结果。它不必很大,只有几列和几行。添加了一个简单的示例。