簡體   English   中英

從1d數組中的值開始切片2d數組

[英]Slicing 2d array from values in 1d array onwards

具有一個任意的二維數組,例如零,以及一個索引數組:

z = np.zeros((5,5))
ix = np.array([1,4,2,3,0])

如何從1d數組指定的列開始添加1 ,以獲得:

array([[0, 1, 1, 1, 1],
       [0, 0, 0, 0, 1],
       [0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [1, 1, 1, 1, 1]])

我無法找到一種使用numpy的簡單方法。

一種方法是-

In [50]: ncols = 5

In [51]: (ix[:,None] <= np.arange(ncols)).view('i1')
Out[51]: 
array([[0, 1, 1, 1, 1],
       [0, 0, 0, 0, 1],
       [0, 0, 1, 1, 1],
       [0, 0, 0, 1, 1],
       [1, 1, 1, 1, 1]], dtype=int8)

如果必須添加到現有數組z

z += (ix[:,None] <= np.arange(ncols))

暫無
暫無

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

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