Редактировать
Спасибо всем.Я отредактировал свой пост и обновил новое время тестирования.
Интересная проблема.
Эксперимент
Я сделал это в своем блокноте Jupyter-Notebook.Все они использовали numpy
API.Вы можете провести эксперимент следующего кода самостоятельно.
Об измерении времени в блокноте jupyter см. Простой способ измерения времени выполнения ячейки в блокноте ipython
Оригинал np.concatenate
%%timeit
n = 100000
t = np.concatenate((np.arange(-n, 0), np.arange(1, n+1)))
#175 µs ± 2.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Sol 1. np.delete
%%timeit
n = 100000
a = np.arange(-n, n+1)
b = np.delete(a, n)
# 179 µs ± 5.66 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Sol 2. Понимание списка + np.arrary
%%timeit
c = np.array([x for x in range(-n, n+1) if x != 0])
# 16.6 ms ± 693 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
Заключение
Нет большой разницы между оригиналом и решением1, но решение 2 является худшим из трех.Я также ищу более быстрые решения.
Справка
Для тех, кто:
заинтересован в инициализации и заполнении массива numpy
запутаться в is
против ==