Как преобразовать ndarray в массив?
Я использую pandas.Series и np.ndarray.
Код похож на этот
>>> t
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
>>> pandas.Series(t)
Exception: Data must be 1-dimensional
>>>
И я пытаюсь преобразовать его в одномерный массив:
>>> tt = t.reshape((1,-1))
>>> tt
array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
tt все еще многомерна, так как существует двойная '['.
Итак, как мне получить действительно преобразование ndarray в массив?
После поиска он говорит, что они одинаковы. Однако в моей ситуации они не работают одинаково.
Ответы
Ответ 1
Альтернативой является использование np.ravel:
>>> np.zeros((3,3)).ravel()
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0.])
Значение ravel
over flatten
равно ravel
, только при необходимости копирует данные и обычно возвращает представление, а flatten
всегда возвращает копию данных.
Чтобы использовать reshape для выравнивания массива:
tt = t.reshape(-1)
Ответ 2
Используйте .flatten
:
>>> np.zeros((3,3))
array([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
>>> _.flatten()
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0.])
EDIT: как указано, это возвращает копию ввода в каждом случае. Чтобы избежать копирования, используйте .ravel
, как было предложено @Ophion.
Ответ 3
tt = array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
oneDvector = tt.A1
Это единственный подход, который разрешил проблему двойных скобок, то есть преобразование в 1D-массив, что nd-матрица.