如何使用 Numpy 重复这个二维对数组?
How can I repeat this array of 2d pairs using Numpy?
我有一个要重复的数组。
test = numpy.array([(1, 11,), (2, 22), (3, 33)])
现在
numpy.repeat(test, 2, 0)
numpy.repeat(test, 2, 1)
结果
array([[ 1, 11],
[ 1, 11],
[ 2, 22],
[ 2, 22],
[ 3, 33],
[ 3, 33]])
array([[ 1, 1, 11, 11],
[ 2, 2, 22, 22],
[ 3, 3, 33, 33]]).
同时
numpy.tile(test, 2)
结果
array([[ 1, 11, 1, 11],
[ 2, 22, 2, 22],
[ 3, 33, 3, 33]]).
我怎样才能得到这个结果?
array([[ 1, 11],
[ 2, 22],
[ 3, 33],
[ 1, 11],
[ 2, 22],
[ 3, 33]])
或者,对于我的用例,我只使用一次重复值。为了避免内存分配,有没有办法让重复序列的生成器以某种方式代替?
这是一个选项:
In [15]: test = np.array([(1, 11,), (2, 22), (3, 33)])
In [16]: np.tile(test.T, 2).T
Out[16]:
array([[ 1, 11],
[ 2, 22],
[ 3, 33],
[ 1, 11],
[ 2, 22],
[ 3, 33]])
np.tile
允许您为每个轴指定重复(作为元组)
In [370]: np.tile(test,(2,1))
Out[370]:
array([[ 1, 11],
[ 2, 22],
[ 3, 33],
[ 1, 11],
[ 2, 22],
[ 3, 33]])
我有一个要重复的数组。
test = numpy.array([(1, 11,), (2, 22), (3, 33)])
现在
numpy.repeat(test, 2, 0)
numpy.repeat(test, 2, 1)
结果
array([[ 1, 11],
[ 1, 11],
[ 2, 22],
[ 2, 22],
[ 3, 33],
[ 3, 33]])
array([[ 1, 1, 11, 11],
[ 2, 2, 22, 22],
[ 3, 3, 33, 33]]).
同时
numpy.tile(test, 2)
结果
array([[ 1, 11, 1, 11],
[ 2, 22, 2, 22],
[ 3, 33, 3, 33]]).
我怎样才能得到这个结果?
array([[ 1, 11],
[ 2, 22],
[ 3, 33],
[ 1, 11],
[ 2, 22],
[ 3, 33]])
或者,对于我的用例,我只使用一次重复值。为了避免内存分配,有没有办法让重复序列的生成器以某种方式代替?
这是一个选项:
In [15]: test = np.array([(1, 11,), (2, 22), (3, 33)])
In [16]: np.tile(test.T, 2).T
Out[16]:
array([[ 1, 11],
[ 2, 22],
[ 3, 33],
[ 1, 11],
[ 2, 22],
[ 3, 33]])
np.tile
允许您为每个轴指定重复(作为元组)
In [370]: np.tile(test,(2,1))
Out[370]:
array([[ 1, 11],
[ 2, 22],
[ 3, 33],
[ 1, 11],
[ 2, 22],
[ 3, 33]])