【问题标题】:how to split one dimentional array returned by numpy.loadtxt如何拆分 numpy.loadtxt 返回的一维数组
【发布时间】:2013-03-31 17:45:37
【问题描述】:

我正在使用以下代码从 csv 文件中读取数组。

na_orders = np.loadtxt(orders_file, delimiter=',', skiprows=0,dtype='i4,i4,i4,S5,S4,f4')

返回一维

[(2011, 1, 10, 'A', 'B', 1500.0) (2011, 1, 13, 'A', 'S', 1500.0)
 (2011, 1, 13, 'I', 'B', 4000.0) (2011, 1, 26, 'G', 'B', 1000.0)
 (2011, 2, 2, 'X', 'S', 4000.0) (2011, 2, 10, 'X', 'B', 4000.0)
 (2011, 3, 3, 'G', 'S', 1000.0) (2011, 3, 3, 'I', 'S', 2200.0)
 (2011, 6, 3, 'I', 'S', 3300.0) (2011, 5, 3, 'I', 'B', 1500.0)
 (2011, 6, 10, 'AL', 'B', 1200.0) (2011, 8, 1, 'G', 'B', 55.0)
 (2011, 8, 1, 'G', 's', 55.0) (2011, 12, 20, 'A', 'S', 1200.0)]

我想要一个二维数组,它将每个元素分成不同的列

【问题讨论】:

  • 如果您使用不同类型的数据,pandas 可能更合适。

标签: python arrays csv numpy import


【解决方案1】:

使用dtype=object 构造函数:

>>> import numpy as np
>>> l = [(2011, 1, 10, 'A', 'B', 1500.0), ..., (2011, 12, 20, 'A', 'S', 1200.0),]
>>> a = np.array(l, dtype='object')
>>> a
array([[2011, 1, 10, A, B, 1500.0],
...
       [2011, 12, 20, A, S, 1200.0]], dtype=object)
>>> a.shape
(14, 6)
>>> sum(a[:, -1])
26510.0

这样的数组不会像原始值数组那样高效,但它将支持 numpy 数组通常支持的所有操作,同时仍然在不同的列中提供不同的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多