Поскольку вы хотите работать с массивами разных форм и размеров, вам необходимо указать какое-то значение по умолчанию для изменения размера меньшего массива, в этом случае я собираюсь заполнить его нулями. Идея состоит в том, чтобы преобразовать меньший массив в ту же форму, что и больший, чтобы numpy
мог выполнять вычисления, например:
import numpy as np
# sample data
rows = 2
cols = 2
a = np.array(np.arange(rows * cols).reshape((rows, cols)))
rows += 1
b = np.array(np.arange(rows * cols).reshape((rows, cols)))
print(a)
>>>
[[0 1]
[2 3]]
print(b)
>>>
[[0 1]
[2 3]
[4 5]]
Теперь вы можете изменить размер меньшего:
if a.size < b.size:
a.resize(b.shape) # in-place resizing adding zeros
else:
b.resize(a.shape)
print(a) # with extra zeros
>>>
[[0 1]
[2 3]
[0 0]]
А затем выполните расчеты:
c = a * b
print(c)
>>>
[[0 1]
[4 9]
[0 0]]
d = a - b
print(d)
>>>
[[ 0 0]
[ 0 0]
[-4 -5]]