![](/img/trans.png)
[英]Counting non-zero elements within each row and within each column of a 2D NumPy array
[英]Select random non zero elements from each row of a 2d numpy array
我有一個二維數組
a = array([[5, 0, 1, 0],
[0, 1, 3, 5],
[2, 3, 0, 0],
[4, 0, 2, 4],
[3, 2, 0, 3]])
和一維數組
b = array([1, 2, 1, 2, 2])
其中( b
)告訴我們我們要從數組a
每一行中選擇多少個非零元素。
例如, b[0] = 1
告訴我們必須從a[0]
選擇1個非零元素, b[1] = 2
告訴我們必須從a[1]
選擇2個非零元素, 等等。
對於一np.random.choice
數組,可以使用np.random.choice
來完成,但是我找不到二維數組的處理方法,因此必須使用for
循環來減慢計算速度。
我希望結果作為2d數組作為
array([[5, 0, 0, 0],
[0, 1, 0, 5],
[2, 0, 0, 0],
[0, 0, 2, 4],
[3, 2, 0, 0]])
在這里,我們在第1行有1個元素,在第2行有2個元素,在第3行有1個元素,依此類推,如數組b所示。
它看起來像一個競爭性編程問題。
我不認為您可以使用numpy.random.choice獲得結果(我可能錯了)。
無論如何,要這樣想。 為了從大小為n
一維數組中選擇x
個非零元素,在最壞的情況下,它的復雜度為O(n)。 而且,對於2D數組,如果遵循相同的幼稚方法,則將為O(n ^ 2)。
這篇文章幾乎與您的問題類似,但是numpy.nonzero也是O(n ^ 2)函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.