我正在尝试将每个元素复制到Python中的2d数组中,以便它使数组的大小加倍,并在要复制的元素之后直接添加该元素。
例如:
[[1,2,3],
[4,5,6],
[7,8,9]]
成为
[[1,1,2,2,3,3],
[4,4,5,5,6,6],
[7,7,8,8,9,9]]
有人可以帮助解决这个问题吗?谢谢!
答案 0 :(得分:2)
您可以为此使用np.repeat(..)
[numpy-doc]:
>>> import numpy as np
>>> np.repeat(a, 2, axis=1)
array([[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9]])
因此,对于第二个轴(axis=1
),我们将元素重复两次。
我们也可以使用列表理解,但是考虑到数据具有相同的时间,使用numpy
更快,并且声明性更多:
times2 = [[xi for x in row for xi in [x, x]] for row in a]
这产生了:
>>> [[xi for x in row for xi in [x, x]] for row in a]
[[1, 1, 2, 2, 3, 3], [4, 4, 5, 5, 6, 6], [7, 7, 8, 8, 9, 9]]