Как преобразовать ndarray в массив в Python - PullRequest
0 голосов
/ 29 августа 2018

У меня есть вопрос, у меня есть эти строки:

s=codecs.open('file.csv', encoding="utf-8").read()
array1=np.asarray(s.splitlines())

print(array1)

и я получаю этот результат из массива:

['39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K'
 '50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K'
 '38, Private, 215646, HS-grad, 9, Divorced, Handlers-cleaners, Not-in-family, White, Male, 0, 0, 40, United-States, <=50K'
 ...
 '36, Private, 146311, 9th, 5, Married-civ-spouse, Machine-op-inspct, Husband, White, Male, 0, 0, 40, United-States, <=50K'
 '47, Self-emp-not-inc, 159869, Doctorate, 16, Married-civ-spouse, Craft-repair, Husband, White, Male, 0, 0, 50, United-States, <=50K'
 '21, Private, 204641, Some-college, 10, Never-married,']

я хочу преобразовать это в:

[['39', 'State-gov', '77516', 'Bachelors', '13',....,'<=50K]['50'...]]

также теперь представляет собой массив с одной строкой и множеством столбцов, и в каждом столбце есть строка, и я хочу изменить каждый столбец на одну строку с количеством столбцов, имеющих количество символов.

У меня нет идеи об этом, я хотел бы разделить ее, но я не могу

Может ли кто-нибудь мне помочь?

спасибо!

1 Ответ

0 голосов
/ 29 августа 2018

Метод 1: Генерация нужного массива из файла

Если вы начинаете с CSV, вы можете просто использовать np.genfromtxt:

Если filename.csv выглядит так:

39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K
50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K

Тогда:

new_arr = np.genfromtxt('filename.csv', dtype='str')

>>> new_arr
array([['39,', 'State-gov,', '77516,', 'Bachelors,', '13,',
        'Never-married,', 'Adm-clerical,', 'Not-in-family,', 'White,',
        'Male,', '2174,', '0,', '40,', 'United-States,', '<=50K'],
       ['50,', 'Self-emp-not-inc,', '83311,', 'Bachelors,', '13,',
        'Married-civ-spouse,', 'Exec-managerial,', 'Husband,', 'White,',
        'Male,', '0,', '0,', '13,', 'United-States,', '<=50K']],
      dtype='<U19')

Метод 2: Исправление вашего массива:

В противном случае, если у вас уже есть массив:

>>> arr
array(['39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K',
       '50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K'],
      dtype='<U133')

Вы можете перебирать ее и разбивать каждую строку, чтобы получить желаемый результат:

new_arr = np.array([i.split() for i in arr])

>>> new_arr
array([['39,', 'State-gov,', '77516,', 'Bachelors,', '13,',
        'Never-married,', 'Adm-clerical,', 'Not-in-family,', 'White,',
        'Male,', '2174,', '0,', '40,', 'United-States,', '<=50K'],
       ['50,', 'Self-emp-not-inc,', '83311,', 'Bachelors,', '13,',
        'Married-civ-spouse,', 'Exec-managerial,', 'Husband,', 'White,',
        'Male,', '0,', '0,', '13,', 'United-States,', '<=50K']],
      dtype='<U19')
...