我有不同長度的列表列表(例如[[1, 2, 3], [4, 5], [6, 7, 8, 9]]
),並且想要將它轉換爲整數數組numpy
。我明白numpy
多維數組中的'sub'數組必須具有相同的長度。那麼,如何將上述例子中的列表轉換成numpy
這樣的[[1, 2, 3, 0], [4, 5, 0, 0], [6, 7, 8, 9]]
這種最有效的方式,即用零填充?將不同長度的列表轉換爲一個numpy數組
2
A
回答
4
你可以用np.zeros製作一個numpy數組,並用你的列表元素填充它們,如下所示。
a = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
import numpy as np
b = np.zeros([len(a),len(max(a,key = lambda x: len(x)))])
for i,j in enumerate(a):
b[i][0:len(j)] = j
結果
[[ 1. 2. 3. 0.]
[ 4. 5. 0. 0.]
[ 6. 7. 8. 9.]]
2
請名單上的一些預處理,通過填充較短的子列表,轉換爲numpy的陣列之前:
>>> lst = [[1, 2, 3], [4, 5], [1, 7, 8, 9]]
>>> pad = len(max(lst, key=len))
>>> np.array([i + [0]*(pad-len(i)) for i in lst])
array([[1, 2, 3, 0],
[4, 5, 0, 0],
[1, 7, 8, 9]])
2
這裏有一個@Divakar
類型的答案:
In [945]: ll = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
In [946]: lens = [len(l) for l in ll] # only iteration
In [947]: lens
Out[947]: [3, 2, 4]
In [948]: maxlen=max(lens)
In [949]: arr = np.zeros((len(ll),maxlen),int)
In [950]: mask = np.arange(maxlen) < np.array(lens)[:,None] # key line
In [951]: mask
Out[951]:
array([[ True, True, True, False],
[ True, True, False, False],
[ True, True, True, True]], dtype=bool)
In [952]: arr[mask] = np.concatenate(ll) # fast 1d assignment
In [953]: arr
Out[953]:
array([[1, 2, 3, 0],
[4, 5, 0, 0],
[6, 7, 8, 9]])
對於大型列表,它有可能更快。但是很難理解和/或重新創建。
Convert Python sequence to NumPy array, filling missing values - Divakar有一篇很好的文章。 itertools.zip_longest
也被提及。這可以被引用爲重複。
相關問題
- 1. 將2D numpy數組列表轉換爲一個3D numpy數組?
- 2. 不可能將列表的整個列表轉換爲numpy數組
- 3. 將Numpy數組列表轉換爲Numpy矩陣
- 4. 將2d numpy數組轉換爲列表列表
- 5. 如何將一系列數組轉換爲2D numpy數組
- 6. 如何將列表和數組轉換爲相同的維度?
- 7. 將numpy ndarray的列表轉換爲多個列表的列表
- 8. 將元組列表轉換爲numpy數組並重構它?
- 9. 爲什麼轉置一個numpy數組將它旋轉90度?
- 10. 查找具有不同列長度的numpy數組的形狀
- 11. 如何將字符串列表轉換爲數字numpy數組?
- 12. 將numpy數組的列表視爲一個numpy對象
- 13. 將NaN值從一個numpy數組轉換爲另一個
- 14. Python將numpy數組轉換爲元組
- 15. 將numpy數組轉換爲元組
- 16. NumPy的數組列表轉換
- 17. 將數組轉換爲數組列表?
- 18. 將數據幀轉換爲numpy數組?
- 19. 將numpy數組轉換爲列表返回類型numpy.ndarray
- 20. 如何將3列表轉換爲1 3D Numpy數組
- 21. numpy無法將列表轉換爲np數組
- 22. 如何將numpy數組轉換爲常規python列表?
- 23. 未能將ndarrays列表轉換爲numpy數組
- 24. 如何將2d列表轉換爲2d numpy數組?
- 25. numpy中不同長度數組的數組比較
- 26. 如何將兩個相同長度的數組轉換爲javascript中的一個對象數組?
- 27. 將列表轉換爲numpy矩陣
- 28. 將numpy數組列表合併爲一個數組(快速)
- 29. 轉換爲numpy數組的元組列表
- 30. 將RGBA numpy數組轉換爲二進制2d numpy數組