numpy.array_repr

numpy.array_repr(a, max_line_width=None, precision=None, suppress_small=None)

Функция numpy.array_repr() возвращает строковое представление массива вместе с информацией о его типе и типе его данных.

Параметры:
a - массив NumPy или его подкласс.
Экземпляр базового класса ndarray или экземпляр его подкласса. Если указать подобный массиву объект Python, то это приведет к исключению AttributeError.
max_line_width - целое число, (необязательный параметр).
Определяет максимальное количество символов в строке. Причем перенос строки будет происходить только после элемента исходного массива. Проще посмотреть пример, чем понять это определение.
precision - целое положительное число или None, (необязательный параметр).
Задает количество цифр после запятой для чисел с плавающей точкой. По умолчанию None, что соответствует текущей точности (как правило 8 знаков). Используемую по умолчанию точность можно изменить с помощью функции numpy.set_printoptions.
suppress_small - True или False, (необязательный параметр).
Если True и число меньше текущей точности печати то оно будет представлено, как 0. Если False то оно будет выведено в строку "как есть". По умолчанию, точность равна 8 знакам, поэтому числа меньше чем 5e-9, будут представлены как 0.
Возвращает:
str - строка Python
строковое представление исходного массива a.

Примеры

Данная функция возвращает "обычное" строковое представление массива:

>>>import numpy as np
>>>
>>> a = np.array([1, 2, 3])
>>> a
array([1, 2, 3])
>>> 
>>> np.array_repr(a)
'array([1, 2, 3])'
>>> 
>>> 
>>> b = np.array([1.1, 2.2, 3.3])
>>> b
array([1.1, 2.2, 3.3])
>>> 
>>> np.array_repr(b)
'array([1.1, 2.2, 3.3])'

Если тип массива является подклассом ndarray, то информация об этом так же будет вкючена в строковое представление:

>>> a = np.mat('1, 2; 3, 4')
>>> a
matrix([[1, 2],
        [3, 4]])
>>> 
>>> np.array_repr(a)
'matrix([[1, 2],\n        [3, 4]])'
>>> 
>>> 
>>> b = np.ma.array([1, 2, 3])
>>> b
masked_array(data=[1, 2, 3],
             mask=False,
       fill_value=999999)
>>> 
>>> np.array_repr(b)
'MaskedArray([1, 2, 3])'

Тип массива выводится всегда, а вот тип его данных выводится только если он отличается от типа данных используемого по умолчанию ('int32', 'float64', 'complex128'):

>>> a = np.array([1, 2, 3], dtype = np.int8)
>>> a
array([1, 2, 3], dtype=int8)
>>> 
>>> np.array_repr(a)
'array([1, 2, 3], dtype=int8)'

Параметр max_line_width позволяет задать максимальную длину строк между знаками переноса \n (причем, эти самые знаки переноса ставятся только после элементов исходного массива), что в свою очередь может повлиять на количество столбцов в выводе:

>>> a = np.arange(8).reshape(2, 4)
>>> a
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])
>>> 
>>> print(np.array_repr(a, max_line_width = 6))
array([[0,
        1,
        2,
        3],
       [4,
        5,
        6,
        7]])
>>> 
>>> print(np.array_repr(a, max_line_width = 7))
array([[0,
        1,
        2,
        3],
       [4,
        5,
        6,
        7]])
>>> 
>>> print(np.array_repr(a, max_line_width = 9))
array([[0,
        1,
        2,
        3],
       [4,
        5,
        6,
        7]])

Как видите, перенос строки происходит только после элемента исходного массива, т.е. разбиения числа на части никогда не произойдет.

Параметр precision позволяет задать количество цифр после запятой - точность:

>>> a = np.random.rand(2, 2)
>>> a
array([[0.53461756, 0.79552285],
       [0.6871809 , 0.89411592]])
>>> 
>>> np.array_repr(a, precision = 4)
'array([[0.5346, 0.7955],\n       [0.6872, 0.8941]])'
>>> 
>>> np.array_repr(a, precision = 2)
'array([[0.53, 0.8 ],\n       [0.69, 0.89]])'

Если какие-то числа окажутся меньше текущей точности печати, то с помощью параметра suppress_small можно определить их строковое представление True - представлять как ноль, False - представлять "как есть":

>>> a = np.random.rand(2, 2)
>>> a
array([[0.02559875, 0.24047709],
       [0.15769377, 0.94102059]])
>>> 
>>> a[1] = 0.000001
>>> a
array([[2.55987455e-02, 2.40477093e-01],
       [1.00000000e-06, 1.00000000e-06]])
>>> 
>>> print(np.array_repr(a, precision = 4, suppress_small = True))
array([[0.0256, 0.2405],
       [0.    , 0.    ]])
>>> 
>>> print(np.array_repr(a, precision = 4, suppress_small = False))
array([[2.5599e-02, 2.4048e-01],
       [1.0000e-06, 1.0000e-06]])