np.all () не выполняется - PullRequest
0 голосов
/ 25 мая 2018

Я написал скрипт:

import numpy as np
a=[0,0,0]
if np.all(a==0):
    print('All are zeros!')

, но ничего не распечатывается.Разве np.all(a==0) не должен оцениваться как True, поскольку все элементы в a[] являются 0?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Чтобы избежать явного преобразования списка a в numpy.ndarray, вы можете напрямую вызывать операторы сравнения numpy:

np.all(np.equals(a, 0))

Однако, если ваши данные уже являются списком Pythonпросто используйте Python all(), чтобы получить тот же результат за долю времени, которое требуется numpy для вычисления all():

In [1]: import random

In [2]: import numpy as np

In [3]: a = [random.random() for _ in range(1000000)]

In [4]: %timeit all(x == 0 for x in a)
615 ns ± 21.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [5]: %timeit np.all(np.equal(a, 0))
24.2 ms ± 2.04 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
0 голосов
/ 25 мая 2018

a должен быть пустым массивом, чтобы получить array([True, True, True]) в результате a == 0.

Измените a=[0,0,0] на a = np.array([0,0,0]) и повторите попытку.

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