У меня есть массив Numpy как список списков с размером n на 4 (строка, столбец). Я пытаюсь разделить данные из каждого отдельного экземпляра списка на четыре отдельных массива, каждый из которых содержит всю информацию из одного столбца, поэтому я могу добавить его в кадр данных pandas. Из этого:
[[126 188 166 1]
[111 173 149 1]
[ 81 119 123 2]
[ 83 122 124 2]
[ 84 122 124 2]
[255 255 255 3]
[255 255 255 3]
[255 255 255 3]]
К этому:
bBand = [126,111,81,...,255]
gBand = [188,173,119,...,255]
rBand = [166,149,123,...,255]
class = [1,1,2,...,3]
Текущий код:
MasterList = np.arrray([[126, 188, 166, 1],[111, 173, 149, 1],[ 81, 119, 123, 2],[ 83, 122, 124, 2],[ 84, 122, 124, 2],[255, 255, 255, 3],[255, 255, 255, 3],[255, 255, 255, 3]])
print(MasterList)
columns = ["bBand","gBand","rBand","class"]
df = pd.DataFrame(MasterList.reshape(-1, len(MasterList)),columns=columns)
Как упоминалось в @DSM, вы можете сделать это следующим образом:
import numpy as np
import pandas as pd
data = np.array([[126, 188, 166, 1],
[111, 173, 149, 1],
[81, 119, 123, 2],
[83, 122, 124, 2],
[84, 122, 124, 2],
[255, 255, 255, 3],
[255, 255, 255, 3],
[255, 255, 255, 3]])
frame = pd.DataFrame(data=data, columns=["bBand","gBand","rBand","class"])
print(frame)
Выход
bBand gBand rBand class
0 126 188 166 1
1 111 173 149 1
2 81 119 123 2
3 83 122 124 2
4 84 122 124 2
5 255 255 255 3
6 255 255 255 3
7 255 255 255 3
Нет необходимости изменять размер массива. Если вам нужны отдельные списки, вы можете попробовать следующее:
data = np.array([[126, 188, 166, 1],
[111, 173, 149, 1],
[81, 119, 123, 2],
[83, 122, 124, 2],
[84, 122, 124, 2],
[255, 255, 255, 3],
[255, 255, 255, 3],
[255, 255, 255, 3]])
for name, column in zip(["bBand","gBand","rBand","class"], data.T):
print(name, column)
Выход
bBand [126 111 81 83 84 255 255 255]
gBand [188 173 119 122 122 255 255 255]
rBand [166 149 123 124 124 255 255 255]
class [1 1 2 2 2 3 3 3]
Наконец, вы можете напрямую установить значения:
bBand = list(data[:, 0])
gBand = list(data[:, 1])
rBand = list(data[:, 2])
_class = list(data[:, 3])
pd.DataFrame(MasterList, columns=columns)
», но если все, что вам нужно, это df,pd.DataFrame(MasterList, columns=columns)
сработал бы. Зачем вам нужно разделение, и зачем менять форму?