Wydaje się, że gubię się w czymś potencjalnie głupim. Mam n-wymiarową tablicę numpy i chcę ją pomnożyć przez wektor (tablicę 1d) wzdłuż jakiegoś wymiaru (który może się zmienić!). Jako przykład, że chcę, aby pomnożyć 2d tablicy przez 1d tablicy wzdłuż osi 0 z pierwszej tablicy, mogę zrobić coś takiego:Multiply numpy ndarray z tablicą 1d wzdłuż danej osi
a=np.arange(20).reshape((5,4))
b=np.ones(5)
c=a*b[:,np.newaxis]
łatwe, ale chciałbym rozszerzyć ten pomysł n-wymiary (dla a, podczas gdy b jest zawsze 1d) i do dowolnej osi. Innymi słowy, chciałbym wiedzieć, jak wygenerować plaster z np.newaxis w odpowiednim miejscu. Powiedzieć, że jest 3d i chce się rozmnażać wzdłuż osi = 1, to, że, aby wygenerować plastra które prawidłowo podać:
c=a*b[np.newaxis,:,np.newaxis]
Tj biorąc pod uwagę liczbę wymiarów (powiedzmy 3), a oś, wzdłuż której chcę, aby pomnożyć (słownie oś = 1), w jaki sposób mogę wygenerować i przejść kawałek:
np.newaxis,:,np.newaxis
Dzięki.
Czy mógłbyś wyjaśnić nieco więcej o tym, co próbujesz osiągnąć przez to? –
Mam dane na tablicy ndarray i chciałbym pomnożyć dane z filtrem wzdłuż niektórych osi. –