如何在Numpy中重复数组行并维持指定顺序?
解决NumPy数组重复顺序问题
嘿,我来帮你搞定这个数组重复顺序的问题~你现在用np.repeat()得到的结果是每一行连续重复3次,但想要的是整个原数组作为一个单元循环重复,对吧?
最简洁的解决方案:用np.tile()
np.tile()就是专门干这个的——它会把整个数组当作一个整体来重复,完全符合你的需求。代码改成这样就行:
import numpy as np arr = np.array([[1,2],[3,4]]) rpt = np.tile(arr, reps=(3, 1))
这里的reps=(3, 1)参数意思是:沿着行方向(axis=0)重复3次,列方向(axis=1)保持原样不重复。运行后得到的结果就是你想要的:
[[1,2],[3,4],[1,2],[3,4],[1,2],[3,4]]
为什么原来的np.repeat()不行?
你之前的代码np.repeat(arr, repeats=3, axis=0)是对数组的每一行单独重复——也就是先把第一行[1,2]重复3次,再把第二行[3,4]重复3次,所以才会出现连续的同一行。
非要用np.repeat()的替代写法(不推荐)
如果一定要用np.repeat()实现,也可以先给原数组加一个维度,重复后再展平,不过这种写法就绕远路了:
import numpy as np arr = np.array([[1,2],[3,4]]) rpt = np.repeat(arr[np.newaxis, :, :], repeats=3, axis=0).reshape(-1, 2)
还是推荐用np.tile(),更直观也更高效~
内容的提问来源于stack exchange,提问作者rpb
相关产品推荐
相关产品推荐

