#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. он показывал массивы, а не списки.