使用 Python Pandas 数据帧的乘法
Multiplication using Python Pandas dataframe
这可能是一个愚蠢的问题,但我正在尝试乘以 2 个数据帧,一个是 100x2 形状(100 行和 2 列),另一个是 2x1 形状。第一个dataframe是(只打印头部,有100行2列,即X0和X1):-
X0 X1
0 1 6.1101
1 1 5.5277
2 1 8.5186
3 1 7.0032
4 1 5.8598
另一个数据框是一个参数向量,我称它为 Theta,有 2 列 0 和 1。
Theta=pd.DataFrame(np.zeros((1, 2)))
print("printing initialized Theta:\n",Theta)
输出为=
0 1
0 0.0 0.0
如您所见,它的大小为 1x2。现在,我将这个 Theta 数据框转置为:
theta1=theta.transpose()
print("printing theta transponse:\n",theta1)
结果是:-
0
0 0.0
1 0.0
然而,当我使用以下方法将第一个数据帧 X 与 Theta1 相乘时:
predict=X.mul(theta1,axis=1)
我得到的输出是(只打印头部):
X0 X1 0
0 0.0 0.0 0.0
1 0.0 0.0 0.0
2 0.0 0.0 0.0
3 0.0 0.0 0.0
4 0.0 0.0 0.0
(100, 3)
如您所见,当我期望它是 100x1 时,它现在变成了 100x3 数据框。
看起来数据帧毕竟不能基于矩阵乘法相乘。我如何做对?我应该将它转换为 numpy.matrix 然后进行矩阵乘法吗?
两点失败。
- 你想用
dot
不是mul
Theta
的索引与 X
不一致。因此,您需要对齐 Theta
的列名称以匹配 X
. 的列名称
试试这个
Theta.columns = X.columns
X.dot(Theta.T)
0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
这可能是一个愚蠢的问题,但我正在尝试乘以 2 个数据帧,一个是 100x2 形状(100 行和 2 列),另一个是 2x1 形状。第一个dataframe是(只打印头部,有100行2列,即X0和X1):-
X0 X1
0 1 6.1101
1 1 5.5277
2 1 8.5186
3 1 7.0032
4 1 5.8598
另一个数据框是一个参数向量,我称它为 Theta,有 2 列 0 和 1。
Theta=pd.DataFrame(np.zeros((1, 2)))
print("printing initialized Theta:\n",Theta)
输出为=
0 1
0 0.0 0.0
如您所见,它的大小为 1x2。现在,我将这个 Theta 数据框转置为:
theta1=theta.transpose()
print("printing theta transponse:\n",theta1)
结果是:-
0
0 0.0
1 0.0
然而,当我使用以下方法将第一个数据帧 X 与 Theta1 相乘时:
predict=X.mul(theta1,axis=1)
我得到的输出是(只打印头部):
X0 X1 0
0 0.0 0.0 0.0
1 0.0 0.0 0.0
2 0.0 0.0 0.0
3 0.0 0.0 0.0
4 0.0 0.0 0.0
(100, 3)
如您所见,当我期望它是 100x1 时,它现在变成了 100x3 数据框。 看起来数据帧毕竟不能基于矩阵乘法相乘。我如何做对?我应该将它转换为 numpy.matrix 然后进行矩阵乘法吗?
两点失败。
- 你想用
dot
不是mul
Theta
的索引与X
不一致。因此,您需要对齐Theta
的列名称以匹配X
. 的列名称
试试这个
Theta.columns = X.columns
X.dot(Theta.T)
0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0