Numpy array - объединить несколько столбцов в один, используя форму - PullRequest
1 голос
/ 31 марта 2019

Для двумерного массива:

table = np.array([[11,12,13],[21,22,23],[31,32,33],[41,42,43]])

Можно ли использовать np.reshape на table, чтобы получить массив single_column, где каждый столбец table расположен вертикально? Это может быть достигнуто путем разделения table и объединения с vstack.

single_column = np.vstack(np.hsplit(table , table .shape[1]))

Reshape может объединить все строки в одну строку, мне интересно, может ли она объединить столбцы, чтобы сделать код чище и, возможно, быстрее.

single_row = table.reshape(-1)

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Еще несколько подходов:


# using approach 1
In [200]: table.flatten(order='F')[:, np.newaxis]
Out[200]: 
array([[11],
       [21],
       [31],
       [41],
       [12],
       [22],
       [32],
       [42],
       [13],
       [23],
       [33],
       [43]])

# using approach 2
In [202]: table.reshape(table.size, order='F')[:, np.newaxis]
Out[202]: 
array([[11],
       [21],
       [31],
       [41],
       [12],
       [22],
       [32],
       [42],
       [13],
       [23],
       [33],
       [43]])
1 голос
/ 31 марта 2019

Вы можете сначала транспонировать, а затем изменить форму:

table.T.reshape(-1, 1)

array([[11],
       [21],
       [31],
       [41],
       [12],
       [22],
       [32],
       [42],
       [13],
       [23],
       [33],
       [43]])
...