Python 为什么numpy在这里返回一维数组?

Python 为什么numpy在这里返回一维数组?,python,arrays,pandas,numpy,Python,Arrays,Pandas,Numpy,我试图从二进制数据的大文件中读取numpy数组。每个二进制记录包含7330个浮点数,后跟一个我想忽略的long,然后是一个int。我创建了一个数据类型,如下所示: dt = [(str(n),'f4') for n in range(7330)] dt += [('junk','i8'), ('label','i4')] 然后通过 d = np.fromfile(file_name,dtype=np.dtype(dt)) 它可以工作,但我得到的是一维数组或记录,而不是我想要的二维数组。更具体

我试图从二进制数据的大文件中读取numpy数组。每个二进制记录包含7330个浮点数,后跟一个我想忽略的long,然后是一个int。我创建了一个数据类型,如下所示:

dt = [(str(n),'f4') for n in range(7330)]
dt += [('junk','i8'), ('label','i4')]
然后通过

d = np.fromfile(file_name,dtype=np.dtype(dt))
它可以工作,但我得到的是一维数组或记录,而不是我想要的二维数组。更具体地说,我得到了一个
d.shape=(58134,)
d[0]
类型为
numpy.void
len(d[0])=7332
(7330浮点数,我将忽略的长度和int)。我想要一个数组的形状
(581347332)

我不能重塑(-17332),因为d是一维的,我最终通过丑陋的、有点荒谬的东西来转换它

nparray = pd.DataFrame.from_records(d).to_numpy()

这看起来很可笑。我做错了什么?谢谢

事实证明numpy.lib.recfunctions.structured\u to\u unstructured正是这样做的。感谢darcamo为我指出了这个方向。

请提供您得到的一维数组的示例,以及它应该是什么样子,以便我们更好地理解这个问题:一维结构化数组
(n,)
和二维
(n,1)
除冗余轴外的记录数组之间的区别是什么?似乎是明智的做法,如果你真的想要
(n,1)
,那就重新塑造它。
dtype
是单个“元素”的“类型”。数组中的每个“元素”都有7330个浮点数、一个long和一个int的信息,但它仍然只是生成的结构化数组的一个“元素”。@darcamo:当然,这是完全正确的。我想我的问题应该是“如何使其成为二维阵列”,而不是“为什么这是一维阵列”。)也许像这样的问题