gpt4 book ai didi

python - 无法在 Python 的列表列表中索引多个元素(使用 : operator)

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:13 25 4
gpt4 key购买 nike

我发现不支持使用 range(:) 运算符对列表列表进行索引很奇怪。

有时这会导致奇怪的值:

a = [[1, 2], [3, 4], [5, 6], [7, 8]]
>>> a
[[1, 2], [3, 4], [5, 6], [7, 8]]
>>> a[0][1]
2
>>> a[1][1]
4
>>> a[2][1]
6

但是,

>>> a[0:3][1]
[3, 4]

我期待 [2,4,6]。我在这里错过了什么?

我也在 Numpy 数组上试过这个。在此处输入代码

>>> a
[[1, 2], [3, 4], [5, 6], [7, 8]]
>>> a[0][1]
2
>>> a[1][1]
4
>>> a[2][1]
6
>>> a[0:3][1]
[3, 4]

我知道我可以使用列表理解,但我的问题是“:”是否支持列表的列表?

最佳答案

numpy 数组确实支持切片,但您没有考虑数组的形状。在 numpy 中,这个数组的形状是:

import numpy as np
a = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
print(a.shape)
>>>(4, 2)

表示它是 4x2。如果您对 [0:3] 进行切片,您将返回第一维的前三个元素。即:

print(a[0:3])
>>>[[1 2]
[3 4]
[5 6]]

这个输出有形状:

print(a[0:3].shape)
>>>(3, 2)

如果你这样做:

print(a[0:3][1])
>>>[3 4]

您再次调用形状为 (3, 2) 的数组第一维的第一个元素。

相反,你想调用:

print(a[0:3][:,1])
>>>[2 4 6]

它为您提供列索引 1 处的所有行元素(即第一维的所有三个元素)(其中 0 和 1 表示第二维的两个维的索引)。

更干净(推荐):

print(a[0:3, 1])
>>>[2 4 6]

关于python - 无法在 Python 的列表列表中索引多个元素(使用 : operator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57528303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com