Có vẻ như tôi đang bị lạc trong một thứ có thể ngớ ngẩn. Tôi có một mảng numpy n-chiều, và tôi muốn nhân nó với một vector (mảng 1d) dọc theo một số kích thước (có thể thay đổi!). Như một ví dụ, nói rằng tôi muốn nhân một mảng 2ngày bởi một mảng 1d dọc theo trục 0 của mảng đầu tiên, tôi có thể làm một cái gì đó như thế này:nhân ndarray numpy với mảng 1d dọc theo một trục nhất định
a=np.arange(20).reshape((5,4))
b=np.ones(5)
c=a*b[:,np.newaxis]
dễ dàng, nhưng tôi muốn mở rộng ý tưởng này để n-dimension (cho a, trong khi b luôn là 1d) và tới bất kỳ trục nào. Nói cách khác, tôi muốn biết làm thế nào để tạo ra một lát với np.newaxis ở đúng nơi. Giả sử rằng a là 3d và tôi muốn nhân dọc theo trục = 1, tôi muốn tạo ra slice sẽ cung cấp chính xác:
c=a*b[np.newaxis,:,np.newaxis]
I.e. cho số lượng kích thước của một (nói 3) và trục mà tôi muốn nhân (nói trục = 1), làm cách nào để tạo và chuyển slice:
np.newaxis,:,np.newaxis
Cảm ơn.
Bạn có thể giải thích thêm một chút về những gì bạn đang cố gắng đạt được bằng cách này? –
Tôi có dữ liệu trên một đĩa dữ liệu, và tôi muốn nhân dữ liệu với một bộ lọc dọc theo một số trục. –