Печать элементов ndarray в порядке их хранения

#python #numpy

#python #numpy

Вопрос:

Чтобы проверить, верны ли мои предположения о расположении памяти, мне иногда хотелось бы печатать элементы an ndarray точно в порядке хранения в памяти.

Я знаю flatten , ravel , flat , flatiter но я все еще не уверен, какая функция действительно будет отражать порядок памяти?

Комментарии:

1. Если вас волнуют такие вещи, почему вы используете Python?

2. Так что, может быть, потому, что у меня есть / планирую использовать привязку C? Потому что мне просто интересно, что происходит под капотом?

Ответ №1:

Вероятно ravel , это будет соответствовать вашим потребностям, если вы используете эту order='K' опцию. Из документов:

порядок: {‘C’,’F’, ‘A’, ‘K’}, необязательно

[…] ‘K’ означает чтение элементов в том порядке, в котором они встречаются в памяти, за исключением изменения данных, когда шаги отрицательны.[…]

Если вы просто хотите узнать больше о расположении массива в памяти без печати всех элементов, вы можете посмотреть его strides атрибут.

Комментарии:

1. flatten также принимает order параметр. Но ravel используется чаще.