簡體   English   中英

當len <ndim時,使用元組(或列表)為numpy數組建立索引?

[英]Index a numpy array using a tuple (or list) when len < ndim?

我有一個3D的numpy數組,例如:

>>> A = np.arange(24).reshape(2,3,4)

我想基於軸1和2的一對坐標沿軸0​​取一維切片:

>>> h = 1
>>> l = 2
>>> A[:,h,l]
array([ 6, 18])

到現在為止還挺好。 但是,如果我的坐標對存儲為元組或列表而不是兩個整數,該怎么辦? 我已經嘗試了一些明顯的選擇,但沒有成功:

>>> coords = (1,2)
>>> A[coords]
array([20, 21, 22, 23])
>>> A[:,coords]
array([[[ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> A[...,coords]
array([[[ 1,  2],
        [ 5,  6],
        [ 9, 10]],

       [[13, 14],
        [17, 18],
        [21, 22]]])

我已經對此進行了搜索,但沒有發現任何東西,但是很可能我沒有使用適當的術語進行搜索。 因此,如果這是一個過於簡單的問題,我們深表歉意!

您可以使用以下方法直接構建切片元組:

In [11]: A[(slice(None),) + coords]
Out[11]: array([ 6, 18])

這是因為調用A[:, 1, 2]等效於/調用:

In [12]: A.__getitem__((slice(None, None, None), 1, 2))
Out[12]: array([ 6, 18])

暫無
暫無

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

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