Как выполнить трансляцию на 2 разных двумерных массива (Python / numpy) - PullRequest
1 голос
/ 23 февраля 2020

Если, если есть 2 numpy массивов, оба двумерных с различной формой: x.shape = (2,2) y.shape = (3,2)

Как я могу выполнять вещание, используя numpy для выполнения таких операций, как: x * y, x - y

Спасибо.

1 Ответ

0 голосов
/ 23 февраля 2020

Поскольку вы хотите работать с массивами разных форм и размеров, вам необходимо указать какое-то значение по умолчанию для изменения размера меньшего массива, в этом случае я собираюсь заполнить его нулями. Идея состоит в том, чтобы преобразовать меньший массив в ту же форму, что и больший, чтобы 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]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...