В чем разница между сглаживанием и равелом в numpy?

Numpy v 1.9 содержит две, казалось бы, идентичные функции: 'flatten' а также 'ravel'

В чем разница? и когда я могу выбрать один против другого для преобразования двумерного np.array в 1-D?

Ответ 1

Aha: Основное функциональное отличие состоит в том, что flatten является методом объекта ndarray и, следовательно, может быть вызван только для истинных массивов numpy. Напротив, ravel() является функцией уровня библиотеки и, следовательно, может быть вызвана на любой объект, который может быть успешно проанализирован. Например, ravel() будет работать над списком ndarrays, а сгладить (очевидно) не будет.

Кроме того, как отметил в своем комментарии @jonrsharpe, метод сглаживания всегда возвращает копию, тогда как ravel только делает это "при необходимости". Все еще не совсем показано, как это определение сделано.