Почему np reshape не работает на np.matrix - PullRequest
1 голос
/ 25 октября 2019

У меня есть разреженная матрица, которую я пытаюсь изменить:

_train_data = model.pipeline.transform(train_data)
print(type(_train_data), _train_data.shape)
>>> <class 'scipy.sparse.csr.csr_matrix'> (18864, 3742)

Сначала я преобразовываю ее в плотный массив с нюансами:

 _train_data = _train_data.todense()
 print(type(_train_data), _train_data.shape)
 >>> <class 'numpy.matrix'> (18864, 3742)

Затем пытаюсь изменить ее с помощьюцель его формирования (18864, 3742, 1), чтобы я мог вписать в некоторые кера плотные слои, но изменение формы не работает:

a_new_df = _train_data.reshape((18864, 3742, -1))
print(type(a_new_df), a_new_df.shape)
>>> <class 'numpy.matrix'> (18864, 3742)

Я также пытался использовать np.reshape ():

a_new_df = np.reshape(_train_data, (18864, 3742, -1))
print(type(a_new_df), a_new_df.shape)
>>> <class 'numpy.matrix'> (18864, 3742)

и использование другой оси для изменения формы:

a_new_df = np.reshape(_train_data, (18864, 3742, 1))
print(type(a_new_df), a_new_df.shape)
>>> <class 'numpy.matrix'> (18864, 3742)

a_new_df = np.reshape(_train_data, (1, 18864, 3742))
print(type(a_new_df), a_new_df.shape)
>>> <class 'numpy.matrix'> (18864, 3742)

Но ни один из них не позволяет успешно изменить форму матрицы.

1 Ответ

0 голосов
/ 25 октября 2019

Из строки документации матрицы:

Матрица - это специализированный двумерный массив, который сохраняет свои двумерные свойства посредством операций.

Если вы хотите изменить формувам нужен массив вместо. матричные и разреженные объекты имеют свойство .A, которое возвращает массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...