У меня есть массив с столбцами, которые находятся в блоках.Я хочу переставить блоки.Это концептуально просто, и я думаю, что это можно сделать просто, но я не знаю, как.
Учитывая массив элементов в форме блока np.hstack(list_of_blocks)
, я хочу получить np.vstack(list_of_blocks)
.
Чтобы сделать его более точным, я хочу перейти от массива a
к массиву b
в приведенном ниже фрагменте.
import numpy as np
a = np.zeros((3,6))
b = np.zeros((9,2))
t_max = 3
for col in range(1,7):
for time in range(1,t_max+1):
val = ((1+col)//2)*100+((col+1) % 2)*10+time
a[time-1,col-1]= val
b[time+t_max*(((1+col)//2)-1)-1,((col+1) % 2)] = val
и матрицы выглядят следующим образом:
>>> print(a)
[[101. 111. 201. 211. 301. 311.]
[102. 112. 202. 212. 302. 312.]
[103. 113. 203. 213. 303. 313.]]
>>> print(b)
[[101. 111.]
[102. 112.]
[103. 113.]
[201. 211.]
[202. 212.]
[203. 213.]
[301. 311.]
[302. 312.]
[303. 313.]]
OfКонечно, матрицы не 3 x (2*3)
, а n x (k*m)
Какой эффективный способ изменить эту форму в numpy?