gpt4 book ai didi

python - 将带括号的字符串转换为 numpy 数组

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

问题描述:

我在数据框列中有一个类似数组的结构作为字符串(我从 csv 文件读取数据框)。

此列的一个字符串元素如下所示:

In  [1]: df.iloc[0]['points']    
Out [2]: '[(-0.0426, -0.7231, -0.4207), (0.2116, -0.1733, -0.1013), (...)]'

所以它实际上是一个类似数组的结构,对我来说它看起来“准备好使用 numpy”。

numpy.fromstring() 没有帮助,因为它不喜欢括号:
convert string representation of array to numpy array in python

字符串本身的一个简单的 numpy.array(),如果我将它复制并粘贴到 array() 函数中,就会返回一个 numpy 数组。
但是如果我用包含这样的字符串的变量填充 array() 函数:np.array(df.iloc[0]['points']) 它确实不工作,给我一个 ValueError: could not convert string to float

Convert string to numpy array

问题:

是否有任何功能可以以简单的方式做到这一点(无需替换或正则表达式括号)?

最佳答案

您可以在传递给 numpy.array 之前使用 ast.literal_eval:

from ast import literal_eval
import numpy as np

x = '[(-0.0426, -0.7231, -0.4207), (0.2116, -0.1733, -0.1013)]'

res = np.array(literal_eval(x))

print(res)

array([[-0.0426, -0.7231, -0.4207],
[ 0.2116, -0.1733, -0.1013]])

您可以对 Pandas 系列中的字符串执行等效操作,但不清楚是否需要跨行聚合。如果是这种情况,您可以组合使用上述逻辑派生的 NumPy 数组列表。

文档解释了 literal_eval 可接受的类型:

Safely evaluate an expression node or a string containing a Python literal or container display. The string or node provided may only consist of the following Python literal structures: strings, bytes, numbers, tuples, lists, dicts, sets, booleans, and None.

因此,我们有效地将字符串转换为元组列表,然后 np.array 可以将其转换为 NumPy 数组。

关于python - 将带括号的字符串转换为 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51898099/

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