我有一个二维的 NumPy 数组,因此第一个数组是从 1 到 50 的数字,第二个数组是 50 到 150 的数字:
a =numpy.array([[1,2,3,...,50],[50,51,52...,150]])
。
我想通过仅打印指定的行,例如第二行
打印(a[1,:])
,
获取[50,51,52...,150]
,但它显示
print((a[1,:]))
IndexError: too many indices for array
错误。当我将第二行减少到与第一行相同数量的元素时,它就起作用了。因此,问题是打印具有不同尺寸的指定行。如果可以的话,请问您能告诉我如何处理吗?谢谢!
最佳答案
如果两个部分中的元素数量不同,您不会得到二维数组:
In [15]: a1=list(range(1,6))
In [16]: a2=list(range(5,16))
In [17]: a=np.array([a1,a2])
In [18]: a
Out[18]: array([[1, 2, 3, 4, 5], [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]], dtype=object)
In [19]: a[1]
Out[19]: [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
In [20]: a.shape
Out[20]: (2,)
注意dtype
。是对象啊a
是一个 2 元素数组,包含 2 个列表。在大多数情况下,它只是两个原始列表的列表,并且必须以相同的方式建立索引:
In [21]: [a1,a2]
Out[21]: [[1, 2, 3, 4, 5], [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]]
如果两个组件具有相同的长度,则 np.array
会构造一个二维数组。
当您遇到此类问题时,请检查shape
和dtype
。仅仅假设这些属性是危险的。将它们打印出来。并警惕将不同长度的列表或数组与 numpy 混合。它最适合适合整齐规则多维结构的数据。
关于python - 如何访问不同维度的多维 NumPy 数组的特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44339663/