繁体   English   中英

同时平铺和修改Numpy数组

[英]Tile and Modify a Numpy Array at the same time

假设我有一个像这样的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。

一种方法是broadcasting -

a - np.arange(6)[:,None]

样品运行-

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]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM