我得到了一串看起來像這樣的串列:
'[[0123][1234][3456]]'
但我想將它插入到整數的二維 NumPy 陣列中。
結果應該是[[0, 1, 2, 3], [1, 2, 3, 4], [3, 4, 5, 6]]。
有沒有一種簡單的方法來做到這一點,而無需先遍歷字串,并且每個數字都將其轉換為 int 并將其插入到串列中,最后將其插入到 NumPy 物件中?
uj5u.com熱心網友回復:
您已經提到的直接解決方案是使用[]括號剝離和拆分輸入字串,創建一個嵌套串列并將其轉換為 NumPy 陣列:
s = '[[0123][1234][3456]]'
t = (
s
.strip('][') # '0123][1234][3456'
.split('][') # ['0123', '1234', '3456']
)
a = np.array([[int(v) for v in u] for u in t])
您可以使用np.fromiter替換內部串列理解:
a = np.array([np.fromiter(u, dtype=int) for u in t])
使用np.stack于內1-d陣列的作品,以及結合:
a = np.stack([np.fromiter(u, dtype=int) for u in t])
與Python 中的 Reconcile np.fromiter 和多維陣列類似,您可以首先使用np.fromiter創建一個包含所有數字的一維陣列,然后將其重塑為二維陣列:
from itertools import chain
a = np.fromiter(chain.from_iterable(t), dtype=int).reshape(len(t), -1)
但我不確定這樣做是否有任何好處。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/396540.html
