Numpy数组列切片生成索引器错误:无效索引异常

Numpy数组列切片生成索引器错误:无效索引异常,numpy,Numpy,我使用的是numpy的1.5.1版和Python2.6.6版 我正在将二进制文件读入numpy数组: >>> dt = np.dtype('<u4,<i2,<i2,<i2,<i2,<i2,<i2,<i2,<i2,u1,u1,u1,u1') >>> file_data = np.fromfile(os.path.join(folder,f), dtype=dt) 我得到: IndexError: inval

我使用的是numpy的1.5.1版和Python2.6.6版

我正在将二进制文件读入numpy数组:

>>> dt = np.dtype('<u4,<i2,<i2,<i2,<i2,<i2,<i2,<i2,<i2,u1,u1,u1,u1')
>>> file_data = np.fromfile(os.path.join(folder,f), dtype=dt)
我得到:

IndexError: invalid index.
我看过一些简单的例子,并且能够进行切片:

>>> a = np.array([(1,2,3),(4,5,6)])
>>> a[:,0]
array([1, 4])

我能看到的案例和简单示例之间的唯一区别是我使用的是dtype。我做错了什么?

当您这样设置数据类型时,您正在创建一个。Numpy将其视为数据类型的1D元素数组。两者之间有着根本的区别

file_data[0][0]

在第一个示例中,您请求1D数组的第一个元素,然后检索该返回元素的第一个元素。在第二种情况下,您需要二维数组第一列的第一行中的元素。这就是为什么您会得到
索引器


如果要使用二维表示法访问单个元素,可以创建一个元素并使用它。不幸的是,如果您想将对象视为二维数组,则所有元素都必须具有相同的数据类型。

谢谢您的回答Stephen。如果下面的答案有用,您应该接受它。
>>> a = np.array([(1,2,3),(4,5,6)])
>>> a[:,0]
array([1, 4])
file_data[0][0]
file_data[0,0]