Первый простой примерСоздание массива блока Numpy из Numpy массива 2D Numpy массивов эффективно
import numpy as np
a = np.ones((2,2))
b = 2*np.ones((2,2))
c = 3*np.ones((2,2))
d = 4*np.ones((2,2))
e = np.array([[a,b],[c,d]])
print(np.vstack(np.array([np.hstack(e[i,:]) for i in range(2)])))
который производит
[[ 1. 1. 2. 2.]
[ 1. 1. 2. 2.]
[ 3. 3. 4. 4.]
[ 3. 3. 4. 4.]]
которая точно так же, как и в результате print(np.bmat(e.tolist()))
или print(np.bmat([[a,b],[c,d]]))
(по модулю тот факт, что np.bmat
создает матрицу numpy, которую можно отличить, используя np.asarray()
).
Тем не менее, моя проблема в том, что у меня есть код, в котором я создаю массив с большой численностью 36 (на данный момент станет намного более поздним, например 400) 2D-массивами numpy, и я хочу создать один массив массивных блоков из них. Я хочу сделать это эффективно и, если возможно, избегать любых преобразований между списками и массивами numpy, так как это часть более крупной конструкции цикла, поэтому будет выполняться много раз (каждый раз разные массивы). Это возможно?
ОК, может быть, я не понимаю. Действительно, для простого примера это работает. Но в моей реальной проблеме я создаю большой массив numpy массивов 2D numpy, и я не хочу преобразовывать его в список. – ThunderBiggi
Если у вас есть 36 массивов, возможно, имеет смысл инициализировать массив o/p, а затем итеративно отрезать в массив o/p и выполнять задания? – Divakar
Я не совсем понимаю, что вы имеете в виду. Количество массивов - это функция параметра, который я планирую увеличить в ближайшем будущем, поэтому он должен быть полностью автоматическим. – ThunderBiggi