いくつかの配列処理を最適化する方法を理解し、postgis互換のデータ型を対象にしています。入力されたデータは、次のようになります。これは出力されnumpyでリストの理解力を列挙しますか?
import json
import numpy
import ppygis
import time
start_time = time.time()
with open('example.json') as fp:
d = json.load(fp)
print "file load time:"
print time.time() - start_time
"""
standard python
"""
start_time = time.time()
py_array = d['items'][0]['coords']
print "array creation:"
print time.time() - start_time
start_time = time.time()
a = [' '.join(map(str, c)) for c in py_array]
b = '(' + ') ('.join(map(str, a)) + ')'
print "python array string processing time:"
print time.time() - start_time
start_time = time.time()
c = [ppygis.Point(p[0], p[1], p[2]) for p in py_array]
print "python array ppygis:"
print time.time() - start_time
"""
numpy
"""
start_time = time.time()
numpy_array = numpy.array(d['items'][0]['coords'])
print "numpy array creation:"
print time.time() - start_time
start_time = time.time()
a = [' '.join(map(str, c)) for c in numpy_array]
b = '(' + ') ('.join(map(str, a)) + ')'
print "numpy array string processing time:"
print time.time() - start_time
start_time = time.time()
c = [ppygis.Point(p[0], p[1], p[2]) for p in numpy_array]
print "numpy array ppygis:"
print time.time() - start_time
:
file load time:
8.29696655273e-05
array creation:
2.86102294922e-06
python array string processing time:
1.09672546387e-05
python array ppygis:
8.10623168945e-06
numpy array creation:
1.31130218506e-05
numpy array string processing time:
0.000116109848022
numpy array ppygis:
3.60012054443e-05
のでnumpyのアレイを使用して操作しているのはなぜ
ここ{
"items": [
{
"id": 10000,
"coords": [[644, 1347, 1], [653, 1353, 1], [637, 1358, 1], [633, 1362, 1]]
}
]
}
は、私が試したものです通常のpython配列よりもはるかに遅いですか?
詳細情報をお寄せいただきありがとうございます。私はまだパフォーマンスは得られていませんが、進歩しているように感じています。 – jfarr
閉鎖についてどう思いますか?リンクされた質問は役に立ちますか?どのようなパフォーマンスが期待されますか?あなたのケースの1つは、文字列の書式設定です。もう1つはオブジェクトの作成です。どちらも、コンパイルされた配列の機能を大いに活用しません。 – hpaulj
私はこれに取り組んでいる間に要件が変更されました。私のソースデータはシェイプファイルになります:)私はいつか個人的な開発のためにこれに戻りたいと思いますが、今は帯域幅がありません。このスレッドを更新します。私はこの作業を再びやっています。助けてくれてありがとう! – jfarr