Python Numpy 重复排列数组
Python Numpy repeating an arange array
所以说我这样做
x = np.arange(0, 3)
这给出了
array([0, 1, 2])
但是我能做什么呢
x = np.arange(0, 3)*repeat(N=3)times
得到
array([0, 1, 2, 0, 1, 2, 0, 1, 2])
编辑:请参阅下面 hpaulj 的回答。坦率地说更好。
最简单的方法是转换回列表并使用:
list(np.arange(0,3))*3
给出:
>> [0, 1, 2, 0, 1, 2, 0, 1, 2]
或者,如果您希望将其作为 numpy
数组:
np.array(list(np.arange(0,3))*3)
给出:
>> array([0, 1, 2, 0, 1, 2, 0, 1, 2])
我最近看到了几个关于 resize
的问题。它不经常使用,但有一种情况可以满足您的需求:
In [66]: np.resize(np.arange(3),3*3)
Out[66]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
还有很多其他方法可以做到这一点。
In [67]: np.tile(np.arange(3),3)
Out[67]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
In [68]: (np.arange(3)+np.zeros((3,1),int)).ravel()
Out[68]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
np.repeat
没有按照我们想要的方式重复
In [70]: np.repeat(np.arange(3),3)
Out[70]: array([0, 0, 0, 1, 1, 1, 2, 2, 2])
但即使这样也可以返工(这有点高级):
In [73]: np.repeat(np.arange(3),3).reshape(3,3,order='F').ravel()
Out[73]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
这个怎么样?
arr = np.arange(3)
res = np.hstack((arr, ) * 3)
输出
array([0, 1, 2, 0, 1, 2, 0, 1, 2])
我会说开销不大。
所以说我这样做
x = np.arange(0, 3)
这给出了
array([0, 1, 2])
但是我能做什么呢
x = np.arange(0, 3)*repeat(N=3)times
得到
array([0, 1, 2, 0, 1, 2, 0, 1, 2])
编辑:请参阅下面 hpaulj 的回答。坦率地说更好。
最简单的方法是转换回列表并使用:
list(np.arange(0,3))*3
给出:
>> [0, 1, 2, 0, 1, 2, 0, 1, 2]
或者,如果您希望将其作为 numpy
数组:
np.array(list(np.arange(0,3))*3)
给出:
>> array([0, 1, 2, 0, 1, 2, 0, 1, 2])
我最近看到了几个关于 resize
的问题。它不经常使用,但有一种情况可以满足您的需求:
In [66]: np.resize(np.arange(3),3*3)
Out[66]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
还有很多其他方法可以做到这一点。
In [67]: np.tile(np.arange(3),3)
Out[67]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
In [68]: (np.arange(3)+np.zeros((3,1),int)).ravel()
Out[68]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
np.repeat
没有按照我们想要的方式重复
In [70]: np.repeat(np.arange(3),3)
Out[70]: array([0, 0, 0, 1, 1, 1, 2, 2, 2])
但即使这样也可以返工(这有点高级):
In [73]: np.repeat(np.arange(3),3).reshape(3,3,order='F').ravel()
Out[73]: array([0, 1, 2, 0, 1, 2, 0, 1, 2])
这个怎么样?
arr = np.arange(3)
res = np.hstack((arr, ) * 3)
输出
array([0, 1, 2, 0, 1, 2, 0, 1, 2])
我会说开销不大。