簡體   English   中英

獲取切片的numpy ndarray(用於人為維度)

[英]Getting a slice of a numpy ndarray (for arbitary dimensions)

我有一個任意維度的Numpy數組,以及一個索引向量,其中每個維度包含一個數字。 我想獲得與索引集相對應的數組切片,小於所有維度的索引數組中的值,例如

A = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9,10,11,12]])
index = [2,3]

result = [[1,2,3],
          [5,6,7]]

直觀的語法類似於A[:index] ,但是由於明顯的原因,它無法正常工作。

如果數組的尺寸是固定的,我可以寫成A[:index[0],:index[1], ... :index[n]] ; 我是否可以使用某種列表理解功能,例如A[:i for i in index]

您可以一次切片多個尺寸:

result = A[:2,:3]

將維度1擴展到索引2,將維度2擴展到索引3。

如果您具有任意尺寸,則還可以創建一個切片tuple

slicer = tuple(slice(0, i, 1) for i in index)
result = A[slicer]

切片定義start (0), stop (您指定的索引)和step (1)-基本類似於range但可用於索引。 元組的第i個條目將切片數組的第i個維度。

如果僅指定stop -indices,則可以使用速記:

slicer = tuple(slice(i) for i in index)

如果您知道尺寸的數量,我建議第一個選擇,如果您不知道尺寸,則建議最后一個選擇。

暫無
暫無

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

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