Как изменить массив numpy, удалив кавычки и добавив запятую между каждым значением? - PullRequest
0 голосов
/ 28 января 2019

Если у меня есть такой массив:

 array([['10      2       1967    19.7    7.5'],
        ['10      3       1967    18.3    21.0'],
        ['10      4       1967    17.6    0.0']])

Как мне удалить цитаты и добавить запятую между каждым значением?Такой, что я получаю что-то вроде этого:

 array([[10, 2, 1967, 19.7, 7.5],
        [10, 3, 1967, 18.3, 21.0],
        [10, 4, 1967, 17.6, 0.0]])

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Это один из подходов.

from numpy import array
import ast
l = array([['10      2       1967    19.7    7.5'],
        ['10      3       1967    18.3    21.0'],
        ['10      4       1967    17.6    0.0']])

l = [list(map(ast.literal_eval,  j.split()))  for i in l for j in i]
print(l)

Вывод:

[[10, 2, 1967, 19.7, 7.5], [10, 3, 1967, 18.3, 21.0], [10, 4, 1967, 17.6, 0.0]]

Примечание. В np.array нельзя использовать как int, так и float.

0 голосов
/ 28 января 2019

Другая пара опций:

array = np.array([['10      2       1967    19.7    7.5'],
                  ['10      3       1967    18.3    21.0'],
                  ['10      4       1967    17.6    0.0']])

new_ary1 = np.array([ [ float(n) for n in e[0].split() ] for e in array ])
new_ary2 = np.array([ np.array(e[0].split(), dtype=float) for e in array ])
0 голосов
/ 28 января 2019

Обычные массивы NumPy должны иметь один dtype.В этом случае может подойти float:

A = np.array([['10      2       1967    19.7    7.5'],
              ['10      3       1967    18.3    21.0'],
              ['10      4       1967    17.6    0.0']])

B = np.array([x[0].split() for x in A], dtype=float)

# array([[   10. ,     2. ,  1967. ,    19.7,     7.5],
#        [   10. ,     3. ,  1967. ,    18.3,    21. ],
#        [   10. ,     4. ,  1967. ,    17.6,     0. ]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...