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