访问二维数组中列的不同语法

2024-06-17 17:58:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了以下代码来访问数组的第二列lst1

import numpy
lst1 = [[1,2,3],[4,5,6],[7,8,9]]
lst1 = numpy.array(lst1)
lst2 = lst1[:,1]
lst3 = lst1[0::,1]

print lst2
print lst3

输出为:

[2 5 8]
[2 5 8]

lst2&;之间有区别吗lst3?是lst2&lst3重要吗

如何使用列表(不使用numpy.array)获得相同的结果


Tags: 代码importnumpy列表数组arrayampprint
2条回答

功能上

lst2 = lst1[:,1]
lst3 = lst1[0::,1]

都是一样的。单个:转换为slice(None,None,None),另一个转换为slice(0,None,None)。在这两种情况下,numpy索引函数(.__getitem__)将其表示为从0开始,在结束处结束,然后按1逐步执行

列表按不接受元组来获取片,例如(slice(0,None,None), 1)。它们没有任何多维语法

[[1,2,3],[4,5,6],[7,8,9]]

是嵌套列表。也就是说,它是一个包含列表的列表。外部列表对内部列表的性质一无所知。另一个答案给出的列表理解是访问内部列表中元素的最合乎逻辑的方式

值得注意的是,您可以将列表理解应用于数组。也就是说,您可以遍历行,并从每行中选择项。你通常不需要这么做,但这是值得知道的

你可以很容易地用列表理解:

>>> lst1=[[1,2,3],[4,5,6],[7,8,9]]
>>> [a[1] for a in lst1]
[2, 5, 8]

对于嵌套列表,如果不进行复制,就无法将列作为列表获取,而列表理解是将数据复制出去的最简单方法。您也可以在列表周围编写一些包装器,在列表中提供一个类似于列的视图,而无需复制,但此时您最好还是使用numpy

相关问题 更多 >