Подтвердить что ты не робот

Как преобразовать 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 в массив?

После поиска он говорит, что они одинаковы. Однако в моей ситуации они не работают одинаково.

4b9b3361

Ответ 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-матрица.