[英]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.