我是Python的新手(以及一般的编程)并想知道是否有人可以帮我解决这个问题?
我想制作n(1 * 4)个矩阵,其中第一个是:
[1,2,3,4],
以及下一个
[3,4,5,6],
[5,6,7,8],
[7,8,9,10]
依旧......
n=70
到目前为止我已经尝试了这个但是我只得到了第一个和第二个,然后它重复了!
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
答案 0 :(得分: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
broadcasting的行为方式。您可以添加一维数组
>>> np.arange(1,4+1)
array([1, 2, 3, 4])
到二维数组
>>> 2*np.arange(n)[:,None]
array([[0],
[2],
[4],
[6]])
产生所需的结果。
请注意,这是一个对象,例如L2G
,而不是n
个单独的对象,并且是array
,而不是matrix
。