我有这段代码:
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])]
答案 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
的功能