Распечатайте данные, форму и dtype массива numpy одним оператором - PullRequest
0 голосов
/ 04 августа 2020

Я часто хочу увидеть shape, dtype и частичное содержимое массива numpy.

Это можно сделать, используя:

print(x.shape, x.dtype, x)

Однако, если x - длинное выражение, это становится неудобным.

Есть ли простой способ получить такой тип вывода с помощью встроенного атрибута ndarray или numpy функции? (Очевидно, можно создать собственную функцию, но я надеюсь этого избежать.)

1 Ответ

0 голосов
/ 04 августа 2020

Чтобы предотвратить возможный длинный вывод массива, вы можете (временно) установить параметр печати threshold :

thresholdint, необязательно Общее количество элементов массива, которые запускают суммирование, а не полное воспроизведение (по умолчанию 1000). Чтобы всегда использовать полное представление без резюмирования, передайте sys.maxsize.

Пример временной установки с помощью диспетчера контекста:

import numpy as np
x = np.arange(100)

with np.printoptions(threshold=5):
    print(x.shape, x.dtype, np.array_repr(x))
#(100,) int32 array([ 0,  1,  2, ..., 97, 98, 99])

(используя np.array_repr(x) вместо простого x также показывает тип массива, то есть массив или MaskedArray)

Вы также можете установить свою собственную строковую функцию :

def info(x):
    with np.printoptions(threshold=5):
        return f'{x.shape} {x.dtype} {np.array_repr(x)}'
        
np.set_string_function(info)

, так что простой ввод имени переменной в консоли возвращает ваше пользовательское строковое представление:

In [1]: x
Out[1]: (100,) int32 array([ 0,  1,  2, ..., 97, 98, 99])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...