假设我想生成这样的一维数组:
1 1 1 1 2 2 2 3 3 4
一般来说,我正在寻找这种形式的东西:
Element N-repetition
1 n-0
2 n-1
3 n-2
4 n-3
. .
. .
. .
n n-(n-1)=1
这当然可以通过组合数组来实现 尺寸n,n-1,n-2,...,但我想知道是否有 这是一种更好的,矢量化的方式吗?
答案 0 :(得分:5)
与Numpy的repeat
:
n = 4
a = np.arange(1,n+1)
数组a
如下所示:
array([1, 2, 3, 4])
你基本上想要以a
的反面重复它,所以:
np.repeat(a, a[::-1])
给出:
array([1, 1, 1, 1, 2, 2, 2, 3, 3, 4])
答案 1 :(得分:1)
def makegenarr(n):
def genarr(x):
return np.repeat(x, n-(x-1))
return(genarr)
x = np.arange(1, 5)
mapfunc = makegenarr(x.shape[0])
np.apply_along_axis(genarr, 0, x)