Как мне справиться с этой проблемой вещания / индексации в numpy?

Я пытался придумать что-то в numpy, и я надеюсь, что кто-то с некоторым опытом с пакетом может помочь мне. У меня есть двумерный массив цен и сопровождающий массив, который говорит мне, следует ли мне использовать эти цены или нет:

prices = np.random.rand(12,4)
use_prices = np.array([[False, False, False, True, True, False, True, True,  True,  False, False, False],
                       [False, False, True,  True, True, True,  False, True, False, False, False, False]])

У меня также есть 3-й массив холдингов, на которые распространяются эти цены. Они представляют собой авуары, которые применяются для каждой из действительных цен (т. Е. Истинных в use_prices):

holdings = np.array([[[1,0,1,0]],[[0,1,0,1]]])
holdings
array([[[1, 0, 1, 0]],

       [[0, 1, 0, 1]]])

и, наконец, у меня есть пустой массив значений, которые в конечном итоге будут состоять из цен, умноженных на авуары. Это трехмерный массив, потому что есть два набора холдингов, а затем массив цен 12x4.

values_array = np.full((2,12,4), np.nan)

Я хотел бы заполнить массив значений ценами владений * для двух наборов владений для действительных цен. В псевдокоде NumPy я представляю, что это будет примерно так:

values_array[use_prices_bool] = (prices * holdings)[use_prices_bool]

Может кто-нибудь сказать мне, если есть хороший способ сделать это, и если да, то что это? Любая помощь очень ценится.

0 ответов

Другие вопросы по тегам