5

ネイティブの python コードは次のようになります。

>>> a=[1,2,3,4,5,6]
>>> [[i+j for i in a] for j in a]
[[2, 3, 4, 5, 6, 7], 
 [3, 4, 5, 6, 7, 8], 
 [4, 5, 6, 7, 8, 9], 
 [5, 6, 7, 8, 9, 10], 
 [6, 7, 8, 9, 10, 11], 
 [7, 8, 9, 10, 11, 12]]

ただし、配列が非常に大きいため、このジョブを実行するには numpy を使用する必要があります。numpyで同じ作業を行う方法についてアイデアを持っている人はいますか?

4

1 に答える 1

9

多くの NumPy 二項演算子にはouter、乗算 (またはこの場合は加算) テーブルに相当するものを形成するために使用できるメソッドがあります。

In [260]: import numpy as np
In [255]: a = np.arange(1,7)

In [256]: a
Out[256]: array([1, 2, 3, 4, 5, 6])

In [259]: np.add.outer(a,a)
Out[259]: 
array([[ 2,  3,  4,  5,  6,  7],
       [ 3,  4,  5,  6,  7,  8],
       [ 4,  5,  6,  7,  8,  9],
       [ 5,  6,  7,  8,  9, 10],
       [ 6,  7,  8,  9, 10, 11],
       [ 7,  8,  9, 10, 11, 12]])
于 2012-11-15T01:59:28.137 に答える