0

私は Python (および一般的なプログラミング) の初心者であり、誰かがこれを手伝ってくれるかどうか疑問に思っていますか?

最初の行列が次の n (1*4) 行列を作成したい:

[1,2,3,4], 

そして次のもの

[3,4,5,6],  

[5,6,7,8], 

[7,8,9,10]

等々..

n=70 

これまでにこれを試しましたが、最初の 1 と 2 しか正しくなく、それが繰り返されます!

L2G = np.zeros((70,1,4))
for i in range(70):
    L2G[i,:,:] = [1,2,3,4]
    if L2G[i,0,0] == L2G[i-1,0,0]:
        L2G[i,:,:] += 2
4

1 に答える 1

0

1 つの可能性:

>>> n = 4
>>> result = np.arange(1,5) + 2*np.arange(n)[:,None]
>>> result
array([[ 1,  2,  3,  4],
       [ 3,  4,  5,  6],
       [ 5,  6,  7,  8],
       [ 7,  8,  9, 10]])

これは、numpy ブロードキャストがどのように動作するかによって機能します。一次元配列を追加できます

>>> np.arange(1,4+1)
array([1, 2, 3, 4])

2次元配列へ

>>> 2*np.arange(n)[:,None]
array([[0],
       [2],
       [4],
       [6]])

目的の結果を生成します。

ただし、これは のような 1 つのオブジェクトであり、個別のオブジェクトではL2Gなく、 ではなくであることに注意してください。narraymatrix

于 2013-08-31T03:03:36.490 に答える