簡體   English   中英

如何將每個 numpy 列中的所有非零元素分配給大小與列數相同的數組中的值?

[英]How to assign all non-zero elements in each numpy column to a value in an array whose size is the same as the number of columns?

所以這有點拗口。 但這是我想要做的:

b = np.array([7,8,2,3])

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

*** The Magic Happens ***

array([[7, 8, 0, 3],
       [0, 0, 2, 3],
       [0, 8, 2, 0]])

我幾乎不認為有一個更快/更整潔的答案。 為其他人寫作以發現它有幫助。 正如評論中提到的@Mark,您可以通過a>0找到非零元素,並將其乘以b將通過重復行並將元素相乘來廣播ba的形狀:

output = (a > 0) * b

另一種方法是:

a[a>0] = np.tile(b,(a.shape[0],1))[a>0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM