gpt4 book ai didi

python - 根据来自不同数组的条件交换 2 个 numpy 数组

转载 作者:行者123 更新时间:2023-12-04 08:18:11 25 4
gpt4 key购买 nike

我有 4 个数组,A、B、C、D。 A 和 B 具有形状 (n,n),C/D 具有形状 (n,n,m)。我试图设置它,以便当 A 的元素大于 B 时,长度为 m 的数组属于 C。本质上C_new = np.where(A > B, C,D) , D_new = np.where(A < B , D, C) .但是,这给了我一个值错误( operands could not be broadcast together with shapes )
我很好奇我是否可以使用 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.where((A < B)[..., np.newaxis], D, C)

关于python - 根据来自不同数组的条件交换 2 个 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65616378/

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