Python Numpy数组中的双元素

时间:2018-10-06 16:41:41

标签: python multidimensional-array

我正在尝试将每个元素复制到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]]

有人可以帮助解决这个问题吗?谢谢!

1 个答案:

答案 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]]