gpt4 book ai didi

python - NumPy 数组到列表的转换

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

在 OpenCV 3 中,函数 goodFeaturesToTrack 返回以下形式的数组

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

将该数组转换为 Python 列表后,我得到了

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

虽然这是一个列表,但如果您发现它多了一对括号,当我尝试通过 A[0][1] 访问元素时,我会收到错误消息。为什么数组和列表具有这种形式?我该如何解决?

最佳答案

因为你有一个 3d 数组,其中一个元素位于第二个轴上:

In [26]: A = [[[1, 2]], [[3, 4]], [[5, 6]], [[7, 8]]]

In [27]: A[0]
Out[27]: [[1, 2]]

当您想通过 A[0][1] 访问第二个项目时,它会引发 IndexError:

In [28]: A[0][1]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-28-99c47bb3f368> in <module>()
----> 1 A[0][1]

IndexError: list index out of range

您可以使用np.squeeze() 来降低维度,并将数组转换为二维数组:

In [21]: import numpy as np

In [22]: A = np.array([[[1, 2]], [[3, 4]], [[5, 6]], [[7, 8]]])

In [33]: A = np.squeeze(A)

In [34]: A
Out[34]:
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])

关于python - NumPy 数组到列表的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39781628/

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