numpy
performance
difference
spherepts

Numpy > np.concatenate()と自前のarray結合の処理時間比較 > np.concatenate()が3割ほど速い

動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)

背景

@redshoga さんのコメントにおいてnp.concatenate()を紹介いただいた。
https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html

Numpyで以前ひっかかったのは、np.append()が遅く、Pythonでの結合にした上でnp.array()にするという処置をしたことがあった。
TensorFlow > TFRecords > Queue and Threadsでの読込み > 読込みを進めるに連れ、読込み時間が増加する > 犯人はnp.append()

np.concatenate()は遅いかどうかをJupyterの%%timeitで計測した。
Jupyter Notebook > %timeit range(100) > 処理時間の計測 > %%timeit > 複数文の処理時間の計測

比較

qiita.png

np.concatenate()の方が3割ほど速い。

ソースの可読性も良くなると思われるため、np.concatenate()を使わせていただきます。