dot()
公式ドキュメントのメソッドに関するエントリが見つかりません。しかし、方法はそこにあり、私はそれを使用できます。どうしてこれなの?
このトピックについて、データ フレーム内のすべての行と別のベクトルとの要素ごとの乗算を計算する方法はありますか? (そしてバックを取得しdataframe
ますか?)、つまり、ドット積を計算するのと似てdot()
いますが、計算するのではなく、要素ごとの積を計算します。
dot()
公式ドキュメントのメソッドに関するエントリが見つかりません。しかし、方法はそこにあり、私はそれを使用できます。どうしてこれなの?
このトピックについて、データ フレーム内のすべての行と別のベクトルとの要素ごとの乗算を計算する方法はありますか? (そしてバックを取得しdataframe
ますか?)、つまり、ドット積を計算するのと似てdot()
いますが、計算するのではなく、要素ごとの積を計算します。
mul
は本質的に外積ですdot
が、 は内積です。受け入れられた答えを拡張しましょう:
In [13]: df = pd.DataFrame({'A': [1., 1., 1., 2., 2., 2.], 'B': np.arange(1., 7.)})
In [14]: v1 = np.array([2,2,2,3,3,3])
In [15]: v2 = np.array([2,3])
In [16]: df.shape
Out[16]: (6, 2)
In [17]: v1.shape
Out[17]: (6,)
In [18]: v2.shape
Out[18]: (2,)
In [24]: df.mul(v2)
Out[24]:
A B
0 2 3
1 2 6
2 2 9
3 4 12
4 4 15
5 4 18
In [26]: df.dot(v2)
Out[26]:
0 5
1 8
2 11
3 16
4 19
5 22
dtype: float64
そう:
df.mul
形状 (6,2) の行列とベクトル (6, 1) を取り、形状 (6,2) の行列を返します
その間:
df.dot
形状 (6,2) の行列とベクトル (2,1) を取り、(6,1) を返します。
これらは同じ操作ではなく、それぞれ外積と内積です。
以下は、DataFrame をベクターで乗算する方法の例です。
In [60]: df = pd.DataFrame({'A': [1., 1., 1., 2., 2., 2.], 'B': np.arange(1., 7.)})
In [61]: vector = np.array([2,2,2,3,3,3])
In [62]: df.mul(vector, axis=0)
Out[62]:
A B
0 2 2
1 2 4
2 2 6
3 6 12
4 6 15
5 6 18
ある程度の正確さで言うのはかなり難しいです。
多くの場合、メソッドは存在し、ベンダーによって内部と見なされ、変更される可能性があるため、文書化されていません。
もちろん、ドキュメントをまとめた人々による単純な見落としである可能性もあります。
2番目の質問について; それについてはよくわかりませんが、新しい S/O の質問を作成する方がよいかもしれません。API をスキャンするだけで、DataFrame の .applymap(function) 機能で何かできますか?