Python Numpy从字符串解析到ndarray
我已将ndarray从服务器传递到客户端,该数组的示例如下所示Python Numpy从字符串解析到ndarray,python,python-3.x,numpy,numpy-ndarray,Python,Python 3.x,Numpy,Numpy Ndarray,我已将ndarray从服务器传递到客户端,该数组的示例如下所示 import numpy as np str_array = "[[0.1233 0.333 4.1111] [0.1233 0.333 4.1111] [0.1233 0.333 4.1111]]" arr = np.fromstring(str_array, dtype=np.float32, sep = ' ') print(arr) 当我运行该代码时,它会发出一条错误消息: File "example.py", l
import numpy as np
str_array = "[[0.1233 0.333 4.1111] [0.1233 0.333 4.1111] [0.1233 0.333 4.1111]]"
arr = np.fromstring(str_array, dtype=np.float32, sep = ' ')
print(arr)
当我运行该代码时,它会发出一条错误消息:
File "example.py", line 89, in <module>
arr = np.fromstring(str_array, dtype=np.float32)
ValueError: string size must be a multiple of element size
文件“example.py”,第89行,在
arr=np.fromstring(str_数组,dtype=np.float32)
ValueError:字符串大小必须是元素大小的倍数
我希望我的字符串化数组再次成为一个数组。如何解决这个问题?我注意到,上面说,np.fromstring()
“返回一个新的1-D数组,该数组由原始二进制或字符串中的文本数据初始化。”
如果您知道数组的维数,那么对于数据是二维的这一事实,一个简单的解决方法就是:
str_array = str_array.replace("]", "")
str_array = str_array.replace("[", "")
np.fromstring(str_array, sep=' ').reshape(3,3)
这就产生了:
array([[0.1233, 0.333 , 4.1111],
[0.1233, 0.333 , 4.1111],
[0.1233, 0.333 , 4.1111]])
使用,然后重新整形
np.矩阵(str_数组)。重塑(-1,3)
矩阵([[0.1233,0.333,4.1111],
[0.1233, 0.333 , 4.1111],
[0.1233, 0.333 , 4.1111]])
或使用属性获取ndarray
np.矩阵(str_数组)。重塑(-1,3)。A
数组([[0.1233,0.333,4.1111],
[0.1233, 0.333 , 4.1111],
[0.1233, 0.333 , 4.1111]])
字符串化的ndarray不是为这样的解析而设计的。不要将此过程构建到代码中。我不想给出一个“竞争性”答案,但我注意到,您链接到的文档中说“不再建议使用此类,即使是线性代数。而是使用正则数组。该类将来可能会被删除。”