Пока вы хотите, чтобы исходные значения a
и b
были сохранены в «верхнем левом углу», вы могли бы go с инициализацией нового массива с вашим желаемым fill_value
(скажем, 99) и поместите в него ваши меньшие массивы так:
import numpy as np
a = np.ones(shape=(3,3))
b = np.ones(shape=(5,5))
c = np.ones(shape=(10,10))
a2 = np.full(shape=(10,10), fill_value=99)
a2[:a.shape[0], :a.shape[1]] = a
b2 = np.full(shape=(10,10), fill_value=99)
b2[:b.shape[0], :b.shape[1]] = b
##
>> a2:
[[ 1 1 1 99 99 99 99 99 99 99]
[ 1 1 1 99 99 99 99 99 99 99]
[ 1 1 1 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]]
Редактировать:
Если вы хотите сделать это автоматически, без необходимости знать размер самого большого квадратного массива:
a = np.ones(shape=(3,3))
b = np.ones(shape=(5,5))
c = np.ones(shape=(10,10))
list_of_arrays = [a, b, c]
shapes = [arr.shape for arr in list_of_arrays]
max_shape = max(shapes)
for iarr, arr in enumerate(list_of_arrays):
arr_new = np.full(shape=max_shape, fill_value=99)
arr_new[:arr.shape[0], :arr.shape[1]] = arr
list_of_arrays[iarr] = arr_new
>> print(list_of_arrays[1])
[[ 1 1 1 1 1 99 99 99 99 99]
[ 1 1 1 1 1 99 99 99 99 99]
[ 1 1 1 1 1 99 99 99 99 99]
[ 1 1 1 1 1 99 99 99 99 99]
[ 1 1 1 1 1 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]
[99 99 99 99 99 99 99 99 99 99]]