Разделить массив Numpy на массивы каждого столбца - PullRequest
0 голосов
/ 30 августа 2018

У меня есть массив 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)

1 Ответ

0 голосов
/ 30 августа 2018

Как уже упоминалось @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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...