试图追加数组

时间:2016-11-19 14:07:16

标签: python arrays numpy

我有这段代码:

csvData = np.array([]);
csvData = np.append(csvData, ['1', '2016-01-01', 'Some text'])
csvData = np.append(csvData, ['2', '2016-01-02', 'Some more text'])
print(csvData)

输出:['1' '2016-01-01' 'Some text' '2' '2016-01-02' 'Some more text']

我想得到类似的东西: [['1' '2016-01-01' 'Some text'], ['2' '2016-01-02' 'Some more text']]

我尝试将数据字符串包装到[]。我这样做的原因,因为我想收集每个csv行,按特定列排序并迭代数据行。

欢迎任何其他解决方案。

我会使用类似:csvData [np.argsort(csvData [:,2])]

的东西

3 个答案:

答案 0 :(得分:2)

您想要的输出是列表,可以通过以下代码生成:

csvData = []
csvData.append(['1', '2016-01-01', 'Some text'])
csvData.append(['2', '2016-01-02', 'Some more text'])
#csvData would be
#[['1', '2016-01-01', 'Some text'], ['2', '2016-01-02', 'Some more text']]

但是既然你使用numpy库,为了将它转换为适当的类型,这一行有助于:

csvData = np.asarray(csvData)
#csvData would be
[['1' '2016-01-01' 'Some text']
 ['2' '2016-01-02' 'Some more text']]

答案 1 :(得分:1)

您可以尝试在子阵列中保存np.append,然后将其附加到主阵列。这样的事情:

array = []
subarray = ['1', '2016-01-01', 'Some text']
...
array.append(subarray)

不知道对象np是什么。

答案 2 :(得分:1)

在我提出解决方案之前,请先查看why you should not build not repeatedly append to numpy arrays

如果你必须这样做(非常效率低下而且非常气馁),这就是如何完成

>>> import numpy as np
>>> r1 = ['1', '2016-01-01', 'Some text']
>>> r2 = ['2', '2016-01-02', 'Some more text']
>>> ar = np.empty(shape=(0,3))
>>> ar = np.vstack( [ar, r1] )
>>> ar = np.vstack( [ar, r2] )
>>> ar
array([['1', '2016-01-01', 'Some text'],
       ['2', '2016-01-02', 'Some more text']], 
      dtype='<U32')

注意: pands内置numpy的库可能更适合您的需求。它提供了读取CSV文件pandas.read_csv

的功能