Как мне справиться с этой проблемой вещания / индексации в 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]
Может кто-нибудь сказать мне, если есть хороший способ сделать это, и если да, то что это? Любая помощь очень ценится.