gpt4 book ai didi

python - 将元组列表整形为 numpy 中的 MxN 维 ndarray

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:48 26 4
gpt4 key购买 nike

我有以下元组列表,

a=[('1A34', 'RBP', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0),
('1A9N', 'RBP', 0.0456267, 0.0539268, 0.331932, 0.0464031, 4.41336e-06, 0.522107),
('1AQ3', 'RBP', 0.0444479, 0.201112, 0.268581, 0.0049757, 1.28505e-12, 0.480883),
('1AQ4', 'RBP', 0.0177232, 0.363746, 0.308995, 0.00169861, 0.0, 0.307837)]

我想做的是创建一个形状为 (4,8) 的 numpy nd.array看起来像这样:

array([['1A34', 'RBP', 0.0, 1.0, 0.0, 0.0, 0.0, 0.0],
['1A9N', 'RBP', 0.0456267, 0.0539268, 0.331932, 0.0464031, 4.41336e-06, 0.522107],
['1AQ3', 'RBP', 0.0444479, 0.201112, 0.268581, 0.0049757, 1.28505e-12, 0.480883],
['1AQ4', 'RBP', 0.0177232, 0.363746, 0.308995, 0.00169861, 0.0, 0.307837]])

我尝试了以下代码:

import numpy as np
x = np.array(a, dtype=('a10,a10,f4,f4,f4,f4,f4,f4'))

但它给出了这个形状:

In [37]: x.shape
Out[37]: (4,)

正确的做法是什么?

最佳答案

您已经完成的是迄今为止最合乎逻辑的方法。要实现您的要求,您需要创建一个对象数组:

z = np.array(a,dtype=np.object)
print z.shape
# (4, 8)

您所要求的看起来是一个按列具有可变数据类型的数组。这正是您使用 np.array(a, dtype=('a10,a10,f4,f4,f4,f4,f4,f4')) 实现的。在内部,您可以将此数组视为 C 中的结构数组,即 dtype=('a10,a10,f4,f4,f4,f4,f4,f4') 的一维数组实例。

通过使用 object 数组,您可以请求 numpy 将所有内容作为一个简单的 python 对象来处理。

关于python - 将元组列表整形为 numpy 中的 MxN 维 ndarray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24486837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com