问题描述
让我们说我们有一个模式
x = np.array([1,2,3])
我们想重复该模式以填充大小为n >> x.size
的数组。
我们可以做类似的事情:
np.tile(x,1 + (n // x.size))[:n]
我们可以根据形状对二维数组做类似的事情。 (而不是大小)并将其抽象为一个函数。
以二维数组为例:
pattern = np.array([[1,2],[4,5]])
n_rows = 7
n_cols = 5
np.tile(
pattern,(1 + (n_rows // pattern.shape[0]),1 + (n_cols // pattern.shape[1]))
)[:n_rows,:n_cols]
Out:
array([[1,1,1],5,4,4],[1,1]])
我的问题:NumPy中是否有本地方法?
解决方法
您可以使其更通用一些,但是没有内置功能
x = np.array([[1,2],[4,5]])
shape = (7,5)
np.tile(x,np.array(shape)//np.array(np.shape(x)) + 1)[tuple(map(slice,shape))]