10

dot() 公式ドキュメントのメソッドに関するエントリが見つかりません。しかし、方法はそこにあり、私はそれを使用できます。どうしてこれなの?

このトピックについて、データ フレーム内のすべての行と別のベクトルとの要素ごとの乗算を計算する方法はありますか? (そしてバックを取得しdataframeますか?)、つまり、ドット積を計算するのと似てdot()いますが、計算するのではなく、要素ごとの積を計算します。

4

3 に答える 3

12

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) を返します。

これらは同じ操作ではなく、それぞれ外積と内積です。

于 2014-11-10T23:16:52.707 に答える
9

以下は、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
于 2013-04-02T00:30:33.633 に答える
1

ある程度の正確さで言うのはかなり難しいです。

多くの場合、メソッドは存在し、ベンダーによって内部と見なされ、変更される可能性があるため、文書化されていません。

もちろん、ドキュメントをまとめた人々による単純な見落としである可能性もあります。

2番目の質問について; それについてはよくわかりませんが、新しい S/O の質問を作成する方がよいかもしれません。API をスキャンするだけで、DataFrame の .applymap(function) 機能で何かできますか?

于 2013-04-02T00:06:27.397 に答える