2017-02-12 6 views
2

配列内の位置の数式を与えられた整数で作成された配列を作成しようとしています。配列内の位置に基づいてエントリを持つ配列を作成する

基本的には、配列の値がmnの値に基づいた数式によって決定されるm X n行列を作成しようとしています。

たとえば、 a = i*jは次のようになり

m = 4 
n = 3 

a^i,j (A sub i,j)

[0, 0, 0] 
[0, 1, 2] 
[0, 2, 4] 
[0, 3, 6] 

をのでA(0,0)0*0 = 0

A(3, 2)になります。このためfromfunctionを使用して、ちょうどその中を包むことができ3*2 = 6

答えて

1

だろうnumpy.matrix。

numpy.matrix(numpy.fromfunction(lambda x, y: x*y, (4,3), dtype=int)) 

あなたが好きな形で渡して、あなたの例に合うように(4,3)を選択しました。

4

リストの内包は、ここに助けることができる:

>>> m = 4 
>>> n = 3 
>>> [[x * y for y in range(n)] for x in range(m) ] 
[[0, 0, 0], [0, 1, 2], [0, 2, 4], [0, 3, 6]] 

あなたはまた、numpyのを使用して放送を活用することができます簡単に使用することによって達成することができ

>>> import numpy as np 
>>> np.arange(m).reshape(m, 1) * np.arange(n) 
array([[0, 0, 0], 
     [0, 1, 2], 
     [0, 2, 4], 
     [0, 3, 6]]) 
+0

をそれはあなたのために動作しますか? –

+0

はい、両方とも私のために働いた。私は可能な限りnumpyを使用しないようにしていますが。 – Dan

1

indicesnumpyから:

import numpy as np 

ind = np.indices((4, 3)) 

次に

ind[0] * ind[1] 

はあなたに望ましい結果得られます。

array([[0, 0, 0], 
     [0, 1, 2], 
     [0, 2, 4], 
     [0, 3, 6]]) 
+1

それはうまくいきました。しかし、これはこの状況のた​​めに働く。ありがとう! – Dan

+0

@ダン:Ok、MikeMuellerの答えはおそらくあなたが望むものです:) – Cleb

関連する問題