将Unicode数组转换为NumPy

4

我有一些Unicode字符串数组,就像这样

u'[(12520, 12540), (16600, 16620)]'

需要将这些转换为numpy数组。 类似的问题解决了已经有Unicode元素数组的问题,但在我的情况下,括号是字符串的一部分。是否有办法直接将其转换为numpy数组(int类型),而不必手动删除括号?


np.array(literal_eval(s)) - Padraic Cunningham
你从哪里获取这些字符串的?如果你有一些代码打印或以其他方式将一堆列表或数组字符串化,以便稍后转换,那么最好保留列表或数组本身,而不是来回转换。 - abarnert
@abarnert 那肯定更好,但我正在处理以这种格式呈现的已发布数据,所以在这种情况下无法避免。 - jacob
@jacob:即使如此,了解发布数据的实际语言也很重要,这样你才知道它的意图。如果它是Python repr调用的输出,则使用literal_eval是完全正确的反转方式。如果它是其他语言,通常但不总是有效作为Python源代码,则使用literal_eval是一个坏主意。有时候你能做的最好的就是猜测,但这永远不应该是你的首选方案。 - abarnert
2个回答

6
你可以使用literal_eval。
from ast import literal_eval
import numpy as np
s=u'[(12520, 12540), (16600, 16620)]'

arr= np.array(literal_eval(s))

1
你可以按如下方式使用 literal_eval
import ast

my_str = u'[(12520, 12540), (16600, 16620)]'

my_nparray = np.array(ast.literal_eval(my_str))

print(my_nparray)

结果为:
[[12520 12540]
 [16600 16620]]

同样地有效的答案,当然也有!只能接受一个,所以接受先到的那个。 - jacob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接