繁体   English   中英

Numpy 从字符串解析为 ndarray

[英]Numpy parse to ndarray from string

我已经将 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", line 89, in <module>
    arr = np.fromstring(str_array, dtype=np.float32)
ValueError: string size must be a multiple of element size

我希望我的字符串化数组再次成为一个 ndarray。 我该如何解决这个问题?

使用numpy.matrix而不是reshape

>>> np.matrix(str_array).reshape(-1,3)
matrix([[0.1233, 0.333 , 4.1111],
        [0.1233, 0.333 , 4.1111],
        [0.1233, 0.333 , 4.1111]])

或者获取ndarray使用属性matrix.A

>>> np.matrix(str_array).reshape(-1,3).A
array([[0.1233, 0.333 , 4.1111],
       [0.1233, 0.333 , 4.1111],
       [0.1233, 0.333 , 4.1111]])

我注意到文档np.fromstring() “返回一个从原始二进制或字符串中的文本数据初始化的新一维数组。”

如果您知道数组的维度,那么对于您的数据是 2D 的事实的一种简单解决方法就是:

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]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM