[解決済み] numpyの配列に対する反復処理
2022-05-08 09:37:16
質問
もっと冗長でない代替案はないのでしょうか。
for x in xrange(array.shape[0]):
for y in xrange(array.shape[1]):
do_stuff(x, y)
と思いついたのです。
for x, y in itertools.product(map(xrange, array.shape)):
do_stuff(x, y)
これはインデントを1つ減らすことになりますが、それでもかなり醜いです。
この疑似コードのようなものを希望しています。
for x, y in array.indices:
do_stuff(x, y)
そんなものは存在するのでしょうか?
解決するには?
を探しているのだと思います。 ndenumerate .
>>> a =numpy.array([[1,2],[3,4],[5,6]])
>>> for (x,y), value in numpy.ndenumerate(a):
... print x,y
...
0 0
0 1
1 0
1 1
2 0
2 1
パフォーマンスについて。リスト内包より少し遅いです。
X = np.zeros((100, 100, 100))
%timeit list([((i,j,k), X[i,j,k]) for i in range(X.shape[0]) for j in range(X.shape[1]) for k in range(X.shape[2])])
1 loop, best of 3: 376 ms per loop
%timeit list(np.ndenumerate(X))
1 loop, best of 3: 570 ms per loop
もし、パフォーマンスが気になるのであれば、もう少し最適化するために
ndenumerate
これは、配列への変換とループの2つの処理を行います。配列があることが分かっている場合は、配列に変換するために
.coords
属性で指定されたフラットなイテレータです。
a = X.flat
%timeit list([(a.coords, x) for x in a.flat])
1 loop, best of 3: 305 ms per loop
関連
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み] NumPyの配列を切り詰めずに、完全に表示するにはどうしたらよいですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] 2次元アレイにおけるピーク検出
-
[解決済み] NumPy の配列を csv ファイルにダンプする
-
[解決済み] エラーです。" 'dict' オブジェクトには 'iteritems' という属性がありません "
-
[解決済み] ネストされた辞書をきれいに印刷するには?
-
[解決済み】forループを使った辞書の反復処理
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
Python百行で韓服サークルの画像クロールを実現する
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く