python - 使用 Python 将对象数组转换为数组数组

标签 python arrays pandas numpy

我有一个大型 .csv 数据库,其列名 VELOCITY 包含 3D 速度矢量。

VELOCITY 列的每个元素都具有以下形式:'(v1, v2, v3)'

读取我使用的数据:

df = pd.read_csv('database.csv')
df = pd.DataFrame(df)

现在,我尝试定义一个 velocity_array,其中每个元素都是 3D 速度矢量。

velocity_array = np.asarray(df['VELOCITY'])

我得到这样的结果:

['(a1, a2, a3)',
 '(b1, b2, b3)',
 '(c1, c2, c3)',
 .
 .
 .
 '(z1, z2, z3)']

这不是我需要的。我需要一组 3D 速度数组。像这样:

[[a1, a2, a3],
 [b1, b2, b3],
 [c1, c2, c3],
 .
 .
 .
 [z1, z2, z3]]

这样我就可以仅通过调用 velocity_array[i] 来恢复 3D-velocity-array。

感谢任何帮助,谢谢!

#=====

只需添加(根据要求):

df.head() 看起来像这样:

     SC_VELOCITY                        EVENT_ID
0   (-7143.645, -825.2191, -2463.361)   388161
1   (-7143.645, -825.2191, -2463.361)   400028
2   (-7087.896, -1058.8871, -2533.3374) 415847
3   (-7024.463, -1291.3812, -2600.547)  527126
4   (-6953.418, -1522.4622, -2664.9265) 605939 

最佳答案

从您的示例数据中可以看出,velocity_array 中的每个条目都有 2 个单引号括起条目,例如'(a1, a2, a3)'。因此,假设您的条目实际上是字符串条目。

如果这是真的,您可以通过以下方式将列中的每个字符串转换为列表:

df['VELOCITY'] = df['VELOCITY'].str.strip("()").str.split(r',\s*')

结果:

velocity_array = np.asarray(df['VELOCITY'])

print(velocity_array)

输出:

[list(['a1', 'a2', 'a3']) list(['b1', 'b2', 'b3'])
 list(['c1', 'c2', 'c3']) list(['z1', 'z2', 'z3'])]

编辑:

如果您的 a1、a2 条目实际上是 float ,并且您还希望将它们从字符串转换为 float ,您可以使用:

velocity_array = df['VELOCITY'].str.strip("()").str.split(r',\s*', expand=True).astype(float).to_numpy()

结果:

根据您的 df.head() 示例数据:

print(velocity_array)

[[-7143.645   -825.2191 -2463.361 ]
 [-7143.645   -825.2191 -2463.361 ]
 [-7087.896  -1058.8871 -2533.3374]
 [-7024.463  -1291.3812 -2600.547 ]
 [-6953.418  -1522.4622 -2664.9265]]

关于python - 使用 Python 将对象数组转换为数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68867081/

相关文章:

python - Python Pandas 中的灵活链接

python - 复制具有相同功能的 Sprite

Android OpenCV undistort 图像从看似相同的 python 实现中产生不同的结果

javascript - 在 JavaScript 数组中查找唯一对象的最快方法

从 char* 数组中的条目创建新字符串

java - 为什么 java 从具有大尺寸数字的第一个维度开始初始化二维数组需要很长时间?

python - Pandas Timedelta 平均值返回错误 "No numeric types to aggregate"。为什么?

python - 移动背景pygame

python - 如何根据osmnx上的一些 "manually chosen"节点绘制路径?

python - pandas:如何一起执行分组和联合