2017-02-12 50 views
2

我試圖創建一個數組,該數組由位於數組中的位置的公式構成。基於數組中的位置創建一個數組

基本上我試圖做一個m X n矩陣,其中數組的值由基於它們的mn值的公式確定。

例如。

m = 4 
n = 3 

a^i,j (A sub i,j)其中a = i*j應該是這樣的:

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

所以A(0,0)0*0 = 0

A(3, 2)3*2 = 6

回答

1

您可以使用fromfunction對於這一點,只是包裝,在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)) 

Then

ind[0] * ind[1] 

給你所期望的結果:

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

這工作,我試圖儘可能避免numpy。但這適用於這種情況。謝謝! – Dan

+0

@Dan:好的,那麼MikeMueller的回答可能就是你想要的:) – Cleb

相關問題