У меня есть массив, который относительно редок, и я хотел бы пройти через каждую строку и перетасовать только ненулевые элементы.
Пример ввода:
[2,3,1,0]
[0,0,2,1]
Результат:
[2,1,3,0]
[0,0,1,2]
Обратите внимание на то, что нули не изменили положение.
Чтобы перетасовать все элементы в каждой строке (включая нули), я могу сделать это:
for i in range(len(X)):
np.random.shuffle(X[i, :])
Я попытался сделать следующее:
for i in range(len(X)):
np.random.shuffle(X[i, np.nonzero(X[i, :])])
Но это не имеет никакого эффекта. Я заметил, что тип возврата X[i, np.nonzero(X[i, :])]
отличается от X[i, :]
, который может быть
причина.
In[30]: X[i, np.nonzero(X[i, :])]
Out[30]: array([[23, 5, 29, 11, 17]])
In[31]: X[i, :]
Out[31]: array([23, 5, 29, 11, 17])