Чересстрочный ряд 2D Numpy Array - PullRequest
1 голос
/ 20 октября 2019

У меня есть двумерный массив, который выглядит следующим образом

array([[x1,x2,x3,x4],
       [x2,x3,x4,x5],
       [x3,x4,x5,x6],
       [y1,y2,y3,y4],
       [y2,y3,y4,y5],
       [y3,y4,y5,y6],])

Я хочу чередовать строки так, чтобы массив выглядел следующим образом

array([[x1,x2,x3,x4],
       [y1,y2,y3,y4],
       [x2,x3,x4,x5],
       [y2,y3,y4,y5],
       [x3,x4,x5,x6],
       [y3,y4,y5,y6],])

Ответы [ 2 ]

2 голосов
/ 20 октября 2019
x = np.random.randint(10,size = (3,5))

Out[23]: 
array([[1, 5, 8, 4, 6],
       [8, 1, 7, 0, 8],
       [4, 7, 5, 2, 9]])

y = np.random.randint(10,size = (3,5))

Out[24]: 
array([[7, 4, 0, 5, 7],
       [4, 2, 8, 6, 1],
       [1, 2, 8, 6, 0]])

np.hstack((x,y)).reshape(6,5)

Out[25]: 
array([[1, 5, 8, 4, 6],
       [7, 4, 0, 5, 7],
       [8, 1, 7, 0, 8],
       [4, 2, 8, 6, 1],
       [4, 7, 5, 2, 9],
       [1, 2, 8, 6, 0]])
1 голос
/ 20 октября 2019

Два связанных метода:

# create example array
A = np.sum(np.ix_(np.array(list("abcxyz"),"O"),np.array(list("1234"),"O"))).astype("U2")
A
# array([['a1', 'a2', 'a3', 'a4'],
#        ['b1', 'b2', 'b3', 'b4'],
#        ['c1', 'c2', 'c3', 'c4'],
#        ['x1', 'x2', 'x3', 'x4'],
#        ['y1', 'y2', 'y3', 'y4'],
#        ['z1', 'z2', 'z3', 'z4']], dtype='<U2')

Вы можете использовать изменение формы и swapaxes:

A.reshape(2,-1,A.shape[-1]).swapaxes(0,1).reshape(A.shape)

, или вы можете изменить форму дважды, используя порядок FORTRAN в одном, но не в другом направлении. :

A.reshape(-1,2,A.shape[-1],order='F').reshape(A.shape)

или

A.reshape(2,-1,A.shape[-1]).reshape(A.shape,order="F")

Результат во всех случаях

# array([['a1', 'a2', 'a3', 'a4'],
#        ['x1', 'x2', 'x3', 'x4'],
#        ['b1', 'b2', 'b3', 'b4'],
#        ['y1', 'y2', 'y3', 'y4'],
#        ['c1', 'c2', 'c3', 'c4'],
#        ['z1', 'z2', 'z3', 'z4']], dtype='<U2')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...