Проблемы при преобразовании массива списка в массив numpy-nd

#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]])