2016-05-09 15 views
-3

私は5つの100x100配列Aを持ち、それぞれの行列に長さ5の配列Bの値を掛けたいと思います。Aの最初の行列にBの最初の値、2番目の行列のBの2番目の値など。私はこれを行うことができますか?異なる長さの配列を持つPythonでの乗算

+1

はい、これが可能です。これまでに何を試しましたか? – Hamms

+0

5つの100x100アレイがある場合は、 "array"と言うときにforループ – Brian

+1

を使用することを検討してください。これは 'numpy'を使用していることを意味しますか? 「5つの100x100アレイ」とは、5つの異なるアレイ、100x100のアレイ、または5x100x100の1つのアレイを意味しますか?あなたの答えが "yes"と "single 5x100x100 array"の場合、A * B [:、None、None] 'はあなたが要求した乗算を行う正しい方法です。 – gboffi

答えて

0

実際、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.]]]) 
関連する問題