Python Как конвертировать ['0.12' '0.23']в нормальный массив NumPy - PullRequest
0 голосов
/ 20 декабря 2018

Я использую пакет, который извлекает значения из файла CSV для меня.Если я распечатываю результат, я получаю ['0.12' '0.23'].Я проверил тип, который является <class 'numpy.ndarray'> Я хочу преобразовать его в массив Numpy, как [0.12, 0.23].Я попытался np.asarray(variabel), но это не решило проблему.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Может быть полезно узнать, как читается csv.Но по какой-либо причине он, кажется, создал массив numpy со строкой dtype:

In [106]: data = np.array(['0.12', '0.23'])
In [107]: data
Out[107]: array(['0.12', '0.23'], dtype='<U4')
In [108]: print(data)
['0.12' '0.23']

Форматирование str такого массива пропускает запятую, дисплей repr сохраняетit.

Эквивалент списка также отображается с запятой:

In [109]: data.tolist()
Out[109]: ['0.12', '0.23']

Мы называем этот массив массивом, но технически он имеет класс numpy.ndarray

In [110]: type(data)
Out[110]: numpy.ndarray

Его можно преобразовать в массив чисел с помощью:

In [111]: data.astype(float)
Out[111]: array([0.12, 0.23])

Это все равно ndarray, просто dtype отличается.Возможно, вам придется прочитать больше в numpy документах о dtype.

Ошибка:

Если я хочу рассчитать с ним, выдает ошибку TypeError: onlyМассивы размера 1 могут быть преобразованы в скаляры Python

имеет другой источник.data имеет 2 элемента.Вы не показываете код, который генерирует эту ошибку, но часто мы видим это при построении вызовов.Предполагается, что параметром является одно число (часто целое число), где в качестве массива, даже с числовым значением dtype), два числа.

0 голосов
/ 20 декабря 2018

Раствор

import numpy as np
array = array.astype(np.float)


# If you are just initializing array you can do this
ar= np.array(your_list,dtype=np.float)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...