gpt4 book ai didi

python - numpy 数组和返回上的 str() 方法

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:14 24 4
gpt4 key购买 nike

在应用str() 方法后,是否有任何内置方法可以返回numpy 数组,例如,

import numpy as np
a = np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]])
a_str = str(a)

#to get back a?
a = some_method(a_str).

以下两种方法不起作用:

from ast import literal_eval
a = literal_eval(a_str) # Error

import numpy as np
a = np.fromstring(a_str) # Error

更新 1:不幸的是,我已经用 str() 方法转换了非常大的数据,所以我不能用其他方法重新转换它。

最佳答案

主要问题似乎是分隔符和换行符。您可以使用 np.array2stringstr.splitlines解决它们:

import numpy as np
from ast import literal_eval

a = np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6]])

a_str = ''.join(np.array2string(a, separator=',').splitlines())

# '[[ 1.1, 2.2, 3.3], [ 4.4, 5.5, 6.6]]'

b = np.array(literal_eval(a_str))

# array([[ 1.1, 2.2, 3.3],
# [ 4.4, 5.5, 6.6]])

请注意,没有任何参数 np.array2string 的行为类似于 str


如果你的字符串是给定的并且不可避免,你可以使用这个 hacky 方法:

a_str = str(a)
res = np.array(literal_eval(''.join(a_str.replace('\n', ' ').replace(' ', ','))))

array([[ 1.1, 2.2, 3.3],
[ 4.4, 5.5, 6.6]])

根据@hpaulj 的评论,np.array2string 的一个好处是能够指定阈值。例如,考虑 x = np.arange(10000) 的字符串表示。

  • str(x) 将返回省略号,例如'[0 1 2 ..., 9997 9998 9999]'
  • np.array2string(x, threshold=11e3) 将返回完整的字符串

关于python - numpy 数组和返回上的 str() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52073960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com