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

一种可能:

>>> 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*np.arange(n)[:,None]
array([[0],
       [2],
       [4],
       [6]])

以产生所需的结果。

请注意,这是一个对象,就像您的L2G, 不是n单独的对象,并且是一个array,而不是一个matrix

于 2013-08-31T03:03:36.490 回答