使用Numpy无法打印不同行索引值,遇形状不匹配索引错误
解决NumPy二维数组索引形状不匹配错误
你遇到的IndexError是因为用于索引的两个数组形状不兼容——行索引数组[0,1]是2个元素,列索引数组[3,2,4]是3个元素,NumPy无法将它们广播成相同形状,所以触发报错。
下面根据不同的需求给出对应的解决方案:
情况1:从每行选取对应位置的单个元素
如果需要第0行取第3个元素、第1行取第2个元素,要保证行、列索引数组长度一致:
print(x[np.array([0,1]), np.array([3,2])]) # 输出:[3 7]
情况2:从每行选取多个列的元素
如果要获取第0、1行的第3、2、4列所有元素,或者每行选取不同数量的列,可以用np.ix_函数自动扩展索引形状,使其支持广播:
print(x[np.ix_([0,1], [3,2,4])]) # 输出: # [[3 2 4] # [8 7 9]]
如果是第0行只取第3个元素,第1行取第2、4个元素,也可以用嵌套列表的方式索引:
print(x[[[0], [1]], [[3], [2,4]]]) # 输出:[[3], [7 9]]
情况3:获取分散的单个元素(跨行列)
如果想单独获取第0行第3个、第1行第2个、第1行第4个元素,需要把行索引数组调整为和列索引长度一致:
print(x[np.array([0,1,1]), np.array([3,2,4])]) # 输出:[3 7 9]
内容的提问来源于stack exchange,提问作者saptarshi
相关产品推荐
相关产品推荐

