【发布时间】:2019-12-10 16:25:38
【问题描述】:
我正在尝试从张量中提取某些数据,但出现了奇怪的错误。在这里,我将尝试生成错误:
a=np.random.randn(5, 10, 5, 5)
a[:, [1, 6], np.triu_indices(5, 0)[0], np.triu_indices(5, 0)[1]].shape
我收到此错误
形状不匹配:索引数组无法与形状一起广播
我什至不做任何广播!都是切片。
我想要什么?将第零轴保持原样(获取所有内容),从第一个轴获取 [1] 和 [6],仅通过取上三角形元素将最后两个轴从 [5, 5] 重塑为 [15]。
【问题讨论】:
-
只有第一个索引是切片,其余是数组,一起广播以创建 3 维的复合索引。
-
那么预期的结果形状是什么,(5,2,15)?
-
@hpaulj 没错!那是所需的形状。我设法得到它,但分两个阶段。我没能做到一行
-
显示 2 个步骤。它可能更简单。请参阅stackoverflow.com/q/57273662/901925 及其副本。
-
@hpaulj 第一步:tmp = a[:, :, np.triu_indices(5, 0)[0], np.triu_indices(5, 0)[1]] 第二步:a= tmp[:, [1, 6], ...] 所以基本上我避免了混合索引