Вопрос о роли трейлинга [0] в np.nonzero (обр) [0] - PullRequest
2 голосов
/ 28 сентября 2019

Рассмотрим следующий фрагмент кода:

import numpy as np

arr = np.array([True, True, False, True, False])

a = np.nonzero(arr)
b = np.nonzero(arr)[0]

вывод для a:

(array([0, 1, 3], dtype=int64),)

вывод для b

[0 1 3]

Вопрос: не похожевывод для a , почему [0] заставляет вывод для b включать только массив, а не dtype?

1 Ответ

3 голосов
/ 28 сентября 2019

Большинство контейнеров python, включая tuple, используют repr для отображения своих элементов, независимо от того, вызываете ли вы str(a) или repr(a).Результат np.nonzero - это tuple, который вы можете увидеть визуально, если заметите завершающую запятую непосредственно перед последней закрывающей скобкой.

Когда ndarray отображается с str, dtypes, которыеможет быть однозначно показано через данные, не получая явную метку dtype.Это включает в себя np.int_, np.float_ (который всегда получает десятичную точку, даже если только конечный), и np.bool_.Поскольку b был извлечен из кортежа и имеет стандартный тип dtype, его можно отобразить в упрощенной форме.

Выходной формат, аналогичный тому, который вы видите в a, выполнив repr(b)вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...