Python 同时平铺和修改Numpy数组

Python 同时平铺和修改Numpy数组,python,arrays,numpy,Python,Arrays,Numpy,假设我有这样一个Numpy数组: [10, 11, 12] 我想复制它几次以形成一个新数组,但每次复制时将每个元素减去1,以生成: [[10 11 12] [ 9 10 11] [ 8 9 10] [ 7 8 9] [ 6 7 8] [ 5 6 7]] 这是一个简单的列表理解: import numpy as np cycles = 6 a = np.array([10, 11, 12]) a = np.stack([a - i for i in range(cyc

假设我有这样一个Numpy数组:

[10, 11, 12]
我想复制它几次以形成一个新数组,但每次复制时将每个元素减去1,以生成:

[[10 11 12]
 [ 9 10 11]
 [ 8  9 10]
 [ 7  8  9]
 [ 6  7  8]
 [ 5  6  7]]
这是一个简单的列表理解:

import numpy as np
cycles = 6
a = np.array([10, 11, 12])

a = np.stack([a - i for i in range(cycles)])
然而,我想知道是否有一个Numpy命令可以做到这一点,或者有一个更有效的方法不使用列表理解。
我正在使用Python 2.7

一种方法是-

样本运行-

In [94]: a
Out[94]: array([10, 11, 12])

In [95]: a - np.arange(6)[:,None]
Out[95]: 
array([[10, 11, 12],
       [ 9, 10, 11],
       [ 8,  9, 10],
       [ 7,  8,  9],
       [ 6,  7,  8],
       [ 5,  6,  7]])

我认为方法2是不正确的。使您的测试数组
a=np.array([101111111112])
。然后
sub1_行(a,cycles=10000)
将返回
数组([[101111111112],[9,101111],[8,9,10],…])
@AGNGazer啊,是的,这对于不一定按顺序排列的通用输入数组不起作用。谢谢你指出!删除了那个。
In [94]: a
Out[94]: array([10, 11, 12])

In [95]: a - np.arange(6)[:,None]
Out[95]: 
array([[10, 11, 12],
       [ 9, 10, 11],
       [ 8,  9, 10],
       [ 7,  8,  9],
       [ 6,  7,  8],
       [ 5,  6,  7]])