2015-03-11 2 views
0

Я попробовал второй пример ниже, и это не сработало, но пример небольшого масштаба для деления массива numpy с другим отлично работает. Какая разница? Как я могу заставить фактическое подразделение работать?Разделение многообразного многомерного массива различной формы

Небольшой масштаб пример того, что я пытаюсь сделать:

>>> import numpy as np 
>>> a = np.asarray([[1, 2, 3], [4, 5, 6]]) 
>>> b = np.asarray([2, 2, 2]) 
>>> a/b   # works as expected 
array([[0, 1, 1], 
     [2, 2, 3]]) 

Фактическое разделение, что я пытаюсь получить работу

>>> a = np.random.random((9, 31, 2, 5)) 
>>> b = np.random.random((9, 31, 2)) 
>>> a/b 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: operands could not be broadcast together with shapes (9,31,2,5) (9,31,2) 

ответ

1

Как насчет

a = np.random.random((9, 31, 2, 5)) 
b = np.random.random((9, 31, 2, 1)) 
print((a/b).shape) 

урожайности

(9, 31, 2, 5) 
+0

Подумайте, что вам не хватает третьего измерения для b ... Попробуйте переустановить код в ответе – Alex

+0

Любая идея о том, как преобразовать фигуру из '(9, 31, 2)' to '(9, 31, 2, 1) '? – orange

+0

Sure 'b = b.reshape (9, 31, 2, 1)' или 'b = np.expand_dims (b, -1)' – Alex

Смежные вопросы