Преобразование 2D массива numpy в одну строку фрейма данных

#python #arrays #pandas #numpy

Вопрос:

У меня есть 2D массив numpy, который выглядит так:

 [[ 0.05269444 -0.00216448]
 [ 0.03842859 -0.02420946]
 [ 0.01363366 -0.00171811]
 [ 0.02662168  0.00833145]
 [ 0.00651133 -0.03832898]
 [-0.05450631  0.03389544]
 [ 0.01026101 -0.00026777]
 [-0.01429901 -0.01723299]
 [ 0.02745928 -0.03982039]
 [ 0.04354913 -0.03573825]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]]
 

и я в основном просто хочу поместить его в фрейм данных pandas в виде отдельной строки. Подобный этому:

 [[ 0.05269444 -0.00216448][ 0.03842859 -0.02420946] .....
[[ 0.05269444 -0.00216448][ 0.03842859 -0.02420946] .....
[[ 0.05269444 -0.00216448][ 0.03842859 -0.02420946] .....
[[ 0.05269444 -0.00216448][ 0.03842859 -0.02420946] .....
.....
 

Я пробовал другие методы, такие как:

some_df.loc[len(some_df)] = 2D_numpy_array

Но я просто получаю эту ошибку:

Data must be 1-dimensional

Комментарии:

1. Вы можете изменить его

2. Вывод выглядит неправильным. Это не один массив, а множество независимых массивов.

Ответ №1:

Во-первых, для синтаксиса python элементы в массивах разделяются запятой(,),

Итак, во-первых, чтобы это работало вместо этого:

 [[ 0.05269444 -0.00216448]
 [ 0.03842859 -0.02420946]
 [ 0.01363366 -0.00171811]
 [ 0.02662168  0.00833145]
 [ 0.00651133 -0.03832898]
 [-0.05450631  0.03389544]
 [ 0.01026101 -0.00026777]
 [-0.01429901 -0.01723299]
 [ 0.02745928 -0.03982039]
 [ 0.04354913 -0.03573825]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]]
 

используйте это:

 [[ 0.05269444, -0.00216448],
 [ 0.03842859, -0.02420946],
 [ 0.01363366, -0.00171811],
 [ 0.02662168,  0.00833145],
 [ 0.00651133, -0.03832898],
 [-0.05450631,  0.03389544],
 [ 0.01026101, -0.00026777],
 [-0.01429901, -0.01723299],
 [ 0.02745928, -0.03982039],
 [ 0.04354913, -0.03573825],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ]]
 

хорошо, во-вторых
, когда ты говоришь

 x = pandas.DataFrame([[ 0.05269444, -0.00216448],
 [ 0.03842859, -0.02420946],
 [ 0.01363366, -0.00171811],
 [ 0.02662168,  0.00833145],
 [ 0.00651133, -0.03832898],
 [-0.05450631,  0.03389544],
 [ 0.01026101, -0.00026777],
 [-0.01429901, -0.01723299],
 [ 0.02745928, -0.03982039],
 [ 0.04354913, -0.03573825],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ],
 [ 0. ,          0.        ]])
 

и после этого
вы попытались сделать

 x[len(x)] = 2d_nparray
 

вместо x[len(x)] write x[len(x) - 1]
того, чтобы потому, что len(x) — это длина кадра данных, но последний индекс в
кадре данных равен len(x) — 1(таким образом, вы обращаетесь к неинициализированной памяти)

и когда вы говорите x[len(x) - 1] = 2d_nparray , что вы говорите x[len(x) - 1] , какой массив 1d вы пытались преобразовать в 2d_nparray, что не разрешено библиотекой, и чтобы это работало, вам нужно изменить 2d_nparray в равной форме, как x[len(x)-1] в этом примере x[len(x)-1] = 2d_array.reshape((2,)) , почему 2? потому x[len(x)-1].shape() = (2,) что и если в 2d_array не будет равного количества элементов x[len(x) - 1] , это не сработает.

Комментарии:

1. он показывал массивы, а не списки.