Я работаю с numpy и следующими данными (все матрицы не имеют всех ячеек):
>>> X1.shape
(59022, 16)
>>> X3.shape
(59022, 84122)
>>> ind.shape
(59022,)
>>> np.max( ind )
59021
>>> np.min( ind )
0
>>> len( set ( ind.tolist() ) )
59022
Короче говоря, ind - это просто способ перестроить строки в любой матрице. Проблема в том, что при перестановке строк в меньшем массиве (X1) работает по желанию, такая же операция над большим массивом (X2) приводит к тому, что все строки ниже определенной точки равны нулю. Вот что я делаю:
>>> np.nonzero( np.sum( X3, axis=1 ) )[0].shape
(59022,)
Теперь посмотрим, что произойдет, если строки будут перегруппированы:
>>> np.nonzero( np.sum( X3[ ind, : ], axis=1 ) )[0].shape
(7966,)
Но для меньшей матрицы все работает отлично:
>>> np.nonzero( np.sum( X1, axis=1 ) )[0].shape
(59022,)
>>> np.nonzero( np.sum( X1[ ind, : ], axis=1 ) )[0].shape
(59022,)
Одна вещь, которую я предполагаю, я могу попытаться использовать разреженные матрицы, но мне просто интересно, смогу ли я заставить эту работу работать. У меня 256 ГБ оперативной памяти, поэтому я не думаю, что память является ограничением. Спасибо за ваши подсказки!