给定一个 Pandas 数据框,转换为 cvxopt 矩阵的最佳方式(可读性或执行速度)是什么,反之亦然?
目前我正在做:
cvxMat = matrix(pdObj.as_matrix())
pdObj[:]=np.array(cvxMat)
此外,是否有一种在不转换对象的情况下使用 cvxopt 矩阵和 pandas 数据帧的混合来进行向量或矩阵代数的合理可读的方法?
下面是一个远不可读的向量点积(pdObj & cvxMat 是列向量):
(matrix(pdObj.as_matrix()).T*cvxMat)[0]
有什么建议吗?
对waitkuo的回答的跟进:
仅用于说明熊猫数据框:
>>> 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]