gpt4 book ai didi

python - Pandas:与 cvxopt 矩阵之间的转换

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:22 27 4
gpt4 key购买 nike

给定一个 Pandas 数据框,转换为 cvxopt 矩阵或反之的最佳方法是什么(可读性或执行速度)?

目前我在做:

cvxMat = matrix(pdObj.as_matrix())
pdObj[:]=np.array(cvxMat)

此外,是否有一种合理可读的方式来混合使用 cvxopt 矩阵和 pandas 数据帧来计算向量或矩阵代数而不转换对象?

下面是一个向量点积(pdObj 和 cvxMat 是列向量),可读性差:

(matrix(pdObj.as_matrix()).T*cvxMat)[0]

有什么建议吗?


waitingkuo回答的后续:

仅用于 pandas 数据框的说明:

>>> m1 = cvxopt.matrix([[1, 2, 3], [2, 3, 4]])
>>> m2 = pd.DataFrame(np.array(m1)).T

>>> m1
<3x2 matrix, tc='i'>

>>> m2.shape
(2, 3)

>>> np.dot(m1,m2)
array([[ 5, 8, 11],
[ 8, 13, 18],
[11, 18, 25]])

但注意:

>>> m1 * m2
0 1 2
0 1 4 9
1 4 9 16

[2 rows x 3 columns]

最佳答案

你可以通过 pdObj.values 从 pandas 获取 numpy 数组

你可以直接在cvxopt矩阵和numpy矩阵之间进行矩阵乘法

In [90]: m1 = cvxopt.matrix([[1, 2, 3], [2, 3, 4]])

In [91]: m2 = np.matrix([[1, 2, 3], [2, 3, 4]])

In [92]: m1
Out[92]: <3x2 matrix, tc='i'>

In [94]: m2.shape
Out[94]: (2, 3)

In [95]: m1 * m2
Out[95]:
matrix([[ 5, 8, 11],
[ 8, 13, 18],
[11, 18, 25]])

关于python - Pandas:与 cvxopt 矩阵之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23078642/

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