簡體   English   中英

numpy 2D 索引 [:,0] 的等效列表列表

[英]List of lists equivalent for numpy 2D indexing [:,0]

我需要訪問列表中每個列表的第一個元素。 通常我通過 numpy arrays 通過索引來做到這一點:

import numpy as np
nparr=np.array([[1,2,3],[4,5,6],[7,8,9]])
first_elements = nparr[:,0]

公元前:

print(nparr[0,:])
[1 2 3]
print(nparr[:,0])
[1 4 7]

不幸的是,我現在必須處理非矩形動態 arrays 所以 numpy 將無法工作。

但是 Python 的標准列表表現得很奇怪(至少對我來說):

pylist=[[1,2,3],[4,5,6],[7,8,9]]
print(pylist[0][:])
[1, 2, 3]
print(pylist[:][0])
[1, 2, 3]

我猜要么列表不支持這一點(這將導致第二個問題:改用什么)或者我的語法錯誤?

你有幾個選擇。 這是一個。

pylist=[[1,2,3],[4,5,6],[7,8,9]]
print(pylist[0])                  # [1, 2, 3]
print([row[0] for row in pylist]) # [1, 4, 7]

或者,如果您想轉置pylist (將其行轉換為列),您可以執行以下操作。

pylist_transpose = [*zip(*pylist)]
print(pylist_transpose[0])        # [1, 4, 7]

pylist_transpose將始終是正方形,行數等於pylist中最短行的長度。

暫無
暫無

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

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