#python-3.x #pandas #numpy
Вопрос:
У меня есть массив списка, который
Ввод:
array([list([1, 1, 1]),
list([1, 1, 1])],dtype=object)
Я хочу преобразовать его в numpy nd-массив:
Выход:
array([[1., 1., 1.,],
[1., 1., 1.,]])
Я попробовал этот код:
import numpy as np
npa = np.asarray(someListOfLists, dtype=np.float32)
Но если потерпит неудачу.
Комментарии:
1. ты можешь попробовать
np.array
? Кроме того, какие входные данные вы используете для приведения к numpy?2. @VivekKalyanarangan, если
asarray
это не сработает, то зачемarray
?
Ответ №1:
Создание вашего массива — простое копирование и вставка не сделают этого:
In [467]: a = np.array([None,None])
In [468]: a[:] = [1,2,3],[4,5,6]
In [469]: a
Out[469]: array([list([1, 2, 3]), list([4, 5, 6])], dtype=object)
Ваша неудачная попытка с полной обратной связью:
In [471]: np.asarray(a, dtype=np.float32)
TypeError: float() argument must be a string or a number, not 'list'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<ipython-input-471-a8170ed9d2a8>", line 1, in <module>
np.asarray(a, dtype=np.float32)
ValueError: setting an array element with a sequence.
Он все еще пытается превратить массив объектов из 2 элементов в 2 элемента с плавающей точкой.
Рабочий способ:
In [472]: np.stack(a)
Out[472]:
array([[1, 2, 3],
[4, 5, 6]])
другой
In [473]: a.tolist()
Out[473]: [[1, 2, 3], [4, 5, 6]]
In [474]: np.array(a.tolist())
Out[474]:
array([[1, 2, 3],
[4, 5, 6]])