python - 使用 np.where() 选择数组的有效方法?
问题描述
我有三个数组:m
、grad1
和grad2
。m
是 形状(x,)
而grad1
和grad2
是 形状(x,y,z)
。我试图找出最有效的方法来创建一个新数组,其中的值grad1
条目grad2
为m
. 我尝试使用以下代码执行此操作:
param0_grad = np.where(m[:] > 0, grad1, grad2)
根据我对 的理解,np.where()
我认为这应该填充param0_grad
或基于. 但是,我收到以下广播错误(当 x=3、y=4、z=2 时):grad1
grad2
m
ValueError: operands could not be broadcast together with shapes (3,) (3,4,2) (3,4,2)
该代码适用于 x=2,但没有 x>2 的值。
解决方案
尝试这个:
param0_grad = np.where(m[:,None,None] > 0, grad1, grad2)
基本上,您需要添加一个空维度来广播尾轴。
推荐阅读
- c++ - Visual Studio 链接器未加载库
- angular - Angular 6,HttpClient,检测后端的数据变化
- python - Python中的正则表达式在特殊字符之前获取所有文本
- c# - 我应该在多个按钮上统一使用单个脚本,还是为每个按钮创建一个脚本?
- android - 如何使用 NestedScrollView 制作工具栏透明 ImageView
- javascript - 如何让网页认为其图像已完成加载?
- c# - cefsharp如何检查页面中的所有java脚本是否完成?
- themes - 扩展默认模板 Odoo 12
- python - 使用 datetype 从 pandas 列绘制直方图
- c++ - 波函数的相互正交性 - 犰狳