Skip to main content
 首页 » 编程设计

不同类型的python列表到数组

2025年05月04日13kenshinobiy

我对列表到数组的转换有疑问。我有一个来自 csv 文件的列表,比如

a=[['1','a'],['2','b']]

现在我只想要第一列,数字“1”和“2”,并将它们转换为一个 numpy 数组。我该如何做到这一点?使用 b = np.array(a) 将所有项目作为字符串放入数组中。

请您参考如下方法:

您可以使用 numpy.fromiter与 operator.itemgetter .请注意,标准 NumPy 数组不是混合类型 (dtype object) 的好选择,因为这会导致所有数据都存储在指针中。

a = [['1', 'a'], ['2', 'b']] 
 
from operator import itemgetter 
 
res = np.fromiter(map(itemgetter(0), a), dtype=int) 
 
print(res) 
 
array([1, 2]) 

一些性能基准测试:

a = [['1', 'a'], ['2', 'b']] * 10000 
 
%timeit np.fromiter(map(itemgetter(0), a), dtype=int)  # 4.31 ms per loop 
%timeit np.array(a)[:, 0].astype(int)                  # 15.1 ms per loop 
%timeit np.array([i[0] for i in a]).astype(int)        # 8.3 ms per loop 

如果你需要 structured array混合类型:

x = np.array([(int(i[0]), i[1]) for i in a], 
             dtype=[('val', 'i4'), ('text', 'S10')]) 
 
print(x) 
 
array([(1, b'a'), (2, b'b')],  
      dtype=[('val', '<i4'), ('text', 'S10')])