簡體   English   中英

NumPy 數組到列表的轉換

[英]NumPy Array to List Conversion

在 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]])

暫無
暫無

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

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