numpy.array_repr
numpy.array_repr(a, max_line_width=None, precision=None, suppress_small=None)
Функция 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]])