簡體   English   中英

python 字典到 numpy 數組切片

[英]python dictionary to numpy array slicing

我有一本字典。

cars_dict= { 'cars_per_cap': [809, 731, 588, 18, 200, 70, 45], 'country': ['United States','Australia','Japan','India','Russia','Morocco','Egypt'], 'drives_right': [True, False, False, False, True, True, True] }

我通過這樣做將其更改為 NumPy

cars_numpy = np.array(cars_dict)

cars_numpy = array({'cars_per_cap': [809, 731, 588, 18, 200, 70, 45], 'country': ['United States', 'Australia', 'Japan', 'India', 'Russia', 'Morocco', 'Egypt'], 'drives_right': [True, False, False, False, True, True, True]}, dtype=object)

我想做切片並從中得到“美國”

print(cars_numpy[1][0])不工作。

我得到的錯誤是這個


IndexError                                Traceback (most recent call last)
<ipython-input-121-54a4195f7446> in <module>
----> 1 print(cars_numpy[1][0])

IndexError: too many indices for array

字典不是列表,您不能將其傳遞給 numpy 並期望得到相同的結果,它沒有排序,它使用內部數據結構以提高效率。

你可以做的是:

cars_numpy = np.array(list(cars_dict.values()))

這會將它們放入一個數組中,但是您不能保證使用此方法的鍵之間的順序,例如country行可能在cars_per_cap之前。

我有幾點建議——

  1. 您需要嵌套列表而不是字典來創建多維度 NumPy 數組。 這可以使用list(dictionary.values())獲得。
  2. 使用np.array(dictionary)將為您提供一個 NumPy 數組,其中包含一個包含字典的條目。 因此錯誤IndexError: too many indices for array因為您要的是行和列,但它在arr[0]只有一個元素
  3. arr[1][0]是使用 numpy 的一種非常低效的方式。 相反,請嘗試arr[1,0]
  4. 字典現在是插入排序的。 從 Python 3.6 開始,對於 Python 的 CPython 實現,字典會記住插入項目的順序。 將它們更改為 numpy arrays (它們的values() )將保留此順序。

因此這將起作用 -

np.array(list(cars_dict.values()))[1,0]
'United States'

暫無
暫無

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

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