-3
私は5つの100x100配列Aを持ち、それぞれの行列に長さ5の配列Bの値を掛けたいと思います。Aの最初の行列にBの最初の値、2番目の行列のBの2番目の値など。私はこれを行うことができますか?異なる長さの配列を持つPythonでの乗算
私は5つの100x100配列Aを持ち、それぞれの行列に長さ5の配列Bの値を掛けたいと思います。Aの最初の行列にBの最初の値、2番目の行列のBの2番目の値など。私はこれを行うことができますか?異なる長さの配列を持つPythonでの乗算
実際、gboffi氏のコメントには答えがあります。しかし、私はコードで、具体的な例を挙げて、その答えを詳しく説明します:
import numpy as np
#example data, all arrays of ones 100x100
A1 = A2 = A3 =A4 = A5 = np.ones((100, 100))
#example array containing the factor for each matrix
B = np.array([1, 2, 3, 4, 5])
#create an array containing all matrices
A = np.array([A1, A2, A3, A4, A5])
A*B[:,None,None]
結果はその後、次のようになります。
array([[[ 1., 1., 1., ..., 1., 1., 1.],
[ 1., 1., 1., ..., 1., 1., 1.],
[ 1., 1., 1., ..., 1., 1., 1.],
...,
[ 1., 1., 1., ..., 1., 1., 1.],
[ 1., 1., 1., ..., 1., 1., 1.],
[ 1., 1., 1., ..., 1., 1., 1.]],
[[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.],
...,
[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.]],
[[ 3., 3., 3., ..., 3., 3., 3.],
[ 3., 3., 3., ..., 3., 3., 3.],
[ 3., 3., 3., ..., 3., 3., 3.],
...,
[ 3., 3., 3., ..., 3., 3., 3.],
[ 3., 3., 3., ..., 3., 3., 3.],
[ 3., 3., 3., ..., 3., 3., 3.]],
[[ 4., 4., 4., ..., 4., 4., 4.],
[ 4., 4., 4., ..., 4., 4., 4.],
[ 4., 4., 4., ..., 4., 4., 4.],
...,
[ 4., 4., 4., ..., 4., 4., 4.],
[ 4., 4., 4., ..., 4., 4., 4.],
[ 4., 4., 4., ..., 4., 4., 4.]],
[[ 5., 5., 5., ..., 5., 5., 5.],
[ 5., 5., 5., ..., 5., 5., 5.],
[ 5., 5., 5., ..., 5., 5., 5.],
...,
[ 5., 5., 5., ..., 5., 5., 5.],
[ 5., 5., 5., ..., 5., 5., 5.],
[ 5., 5., 5., ..., 5., 5., 5.]]])
はい、これが可能です。これまでに何を試しましたか? – Hamms
5つの100x100アレイがある場合は、 "array"と言うときにforループ – Brian
を使用することを検討してください。これは 'numpy'を使用していることを意味しますか? 「5つの100x100アレイ」とは、5つの異なるアレイ、100x100のアレイ、または5x100x100の1つのアレイを意味しますか?あなたの答えが "yes"と "single 5x100x100 array"の場合、A * B [:、None、None] 'はあなたが要求した乗算を行う正しい方法です。 – gboffi