我從檔案中收到以下字串
data = 'data: [nan, nan, nan, nan, nan, nan, -10.34, nan, 4.45533]'
并希望將其轉換為 numpy 陣列。有沒有在python中做到這一點的好方法?
我已經試過了
x_values_list = np.fromstring(data[5:], dtype=float, sep=',')
但它只是回傳我 [-1]
uj5u.com熱心網友回復:
評論中的一個建議表明您需要切片以擺脫括號:
np.fromstring(data[7:-1], dtype=float, sep=',')
更通用的解決方案可能是使用正則運算式僅提取括號之間的部分:
import re
import numpy as np
a = np.fromstring(re.search(r'(?<=\[)[^\[\]] (?=\])', data).group(),
dtype=float, sep=',')
如果您不確定是否會匹配:
m = re.search(r'(?<=\[)[^\[\]] (?=\])', data)
if m:
a = np.fromstring(m.group(), dtype=float, sep=',')
else:
a = np.array([])
輸出:
array([ nan, nan, nan, nan, nan, nan,
-10.34 , nan, 4.45533])
uj5u.com熱心網友回復:
該問題沒有指定所需的輸出和/或如何實作它的限制......
假設您的目標是獲得numpy.ndarray與此類似的
[ 0. 0. 0. 0. 0. 0. -10.34
0. 4.45533]
然后你可以創建一個像
import numpy as np
def string_to_numpy_array(data):
data = data.replace('data: ', '')
data = data.replace('[', '')
data = data.replace(']', '')
data = data.replace('nan', '0')
data = data.split(',')
data = [float(i) for i in data]
data = np.array(data)
print(data)
print(type(data))
return data
它基本上
- 洗掉
data:,[和] - 替換
nan成0 - 從每個專案中創建一個浮動
- 將其轉換為一個 numpy 陣列
- 列印 numpy 陣列和健全的型別
這很簡單,無論您不想要什么步驟,都可以輕松將其取出(例如,如果您愿意nan,請洗掉被替換的函式行)。
如下圖所示,如果我測驗它

我明白了

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/463188.html
