2016-11-19 2 views
0

У меня есть этот кусок кода:Попытка добавить массивы

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

http://stackoverflow.com/a/3881504/1749888 – RomanHotsiy

+0

Научитесь использовать 'np.conacatenate' перед тем, как попытаться использовать' np.append', как если бы это был список, добавляющий клон , Вам нужно понять размеры массива при использовании 'numpy'. – hpaulj

ответ

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

Вы можете попытаться сохранить np.append в подрешетки, а затем добавить его в основной массив. Нечто подобное:

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

Не знаю, что объект np есть.

+1

'np' - пакет' numpy' - числовые массивы; см. тег – hpaulj

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

Смежные вопросы