numpyコードのベクトル化

アビジートクリシュナン

私は次のコードをベクトル化しようとしています-

for i in range(imL.shape[0]):
    for j in range(imL.shape[1]):
        if j - disp[i][j] >= 0:
            imR[i, j - disp[i][j], :] = imL[i, j, :]

基本的に、私はこれをやりたいです-

A[i, j - B[i, j], k] = C[i, j, k] for all (i, j, k)

ブールインデックスを調べて、これを思いつきました-

tmp = np.arange(imR.shape[1])
tmp = np.repeat(tmp[np.newaxis, :], imR.shape[0], axis=0)
tmp = np.repeat(tmp[:, :, np.newaxis], imR.shape[2], axis=2)

imR[(tmp - disp) >= 0] = imL

ただし、これはエラーをスローします-

TypeError: NumPy boolean array indexing assignment requires a 0 or 1-dimensional input, input has 3 dimensions

整数インデックスが解決策だと思いますが、何も思いつきません。これを効率的にベクトル化する方法はありますか?

注:imLとimRはN x M x 3ndarrayです。dispはNx Mndarrayです。

wm

np.indicesを使用すると、一時インデックス配列の作成を簡略化できます

i_indices, j_indices = np.indices(disp.shape)

次に、カスタム数式を使用して更新されたインデックス配列を作成できます。

# j - B[i, k]
new_j_ind = j_indices - disp

の条件で、更新されたj値を元j値に置き換えます。

# if j - disp[i][j] < 0, keep original j index
new_j_ind[new_j_ind < 0] = j_indices[new_j_ind < 0]

そして、配列を書き込みます。

# A[i, j - B[i, j] if j - B[i, j] > 0 else j, k] = C[i, j, k] for all (i, j, k)
imR[i_indices, new_j_ind] = imL

ただし、注意が必要です。これは[i, j - B[i, j]]、(i、k)の同じ座標にマップされる場合、明確に定義されていませんforループでは、それは明確に定義されています(最後に書き込まれた値が優先されます)が、numpyのベクトル化コードではそうではありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonコードをnumpyにベクトル化する

分類Dev

Numpyのベクトル化

分類Dev

numpyの標準ループにベクトル化されたコードで異なる結果

分類Dev

ベクトル化されたnumpyコードがforループよりも遅いのはなぜですか?

分類Dev

numpyのベクトル化でコードの速度が向上しないのはなぜですか

分類Dev

ベクトル化されたコードでのscipyfsolveの速度

分類Dev

ベクトル化されたコードでのscipyfsolveの速度

分類Dev

文字列操作用の Matlab/Octave コードのベクトル化

分類Dev

以前の値に応じた操作でnumpyコードをベクトル化する

分類Dev

次のPythonコードをベクトル化する方法は?

分類Dev

次のPythonコードをベクトル化する方法

分類Dev

このコードをRでベクトル化する方法

分類Dev

ユークリッド距離計算のベクトル化-NumPy

分類Dev

ループの代わりにnumpyのベクトル化

分類Dev

numpyのループのベクトル化を理解する

分類Dev

Python / NumPyの内部および外部のforループのブロードキャスト/ベクトル化

分類Dev

より高速な実行のためのMATLABコードのベクトル化

分類Dev

numpyで1つのホットエンコーディングループをベクトル化する方法

分類Dev

NumpyはPythonのforループをベクトル化します

分類Dev

NumpyはPythonのforループをベクトル化します

分類Dev

このforループをnumpyでベクトル化する

分類Dev

Numpyのベクトル化とプレーンなPythonのハイブリッド化

分類Dev

Numpyベクトル演算の並列化

分類Dev

numpy.einsumのベクトル化

分類Dev

単純なNumpyのベクトル化

分類Dev

tidyverseのベクトルからファクターレベルを再コード化する方法は?

分類Dev

非スカラー出力のNumpyベクトル化関数

分類Dev

この反復的なC ++コードを「ベクトル化」する方法は?

分類Dev

Pythonでのnumpyを使用したループのベクトル化/最適化

Related 関連記事

  1. 1

    Pythonコードをnumpyにベクトル化する

  2. 2

    Numpyのベクトル化

  3. 3

    numpyの標準ループにベクトル化されたコードで異なる結果

  4. 4

    ベクトル化されたnumpyコードがforループよりも遅いのはなぜですか?

  5. 5

    numpyのベクトル化でコードの速度が向上しないのはなぜですか

  6. 6

    ベクトル化されたコードでのscipyfsolveの速度

  7. 7

    ベクトル化されたコードでのscipyfsolveの速度

  8. 8

    文字列操作用の Matlab/Octave コードのベクトル化

  9. 9

    以前の値に応じた操作でnumpyコードをベクトル化する

  10. 10

    次のPythonコードをベクトル化する方法は?

  11. 11

    次のPythonコードをベクトル化する方法

  12. 12

    このコードをRでベクトル化する方法

  13. 13

    ユークリッド距離計算のベクトル化-NumPy

  14. 14

    ループの代わりにnumpyのベクトル化

  15. 15

    numpyのループのベクトル化を理解する

  16. 16

    Python / NumPyの内部および外部のforループのブロードキャスト/ベクトル化

  17. 17

    より高速な実行のためのMATLABコードのベクトル化

  18. 18

    numpyで1つのホットエンコーディングループをベクトル化する方法

  19. 19

    NumpyはPythonのforループをベクトル化します

  20. 20

    NumpyはPythonのforループをベクトル化します

  21. 21

    このforループをnumpyでベクトル化する

  22. 22

    Numpyのベクトル化とプレーンなPythonのハイブリッド化

  23. 23

    Numpyベクトル演算の並列化

  24. 24

    numpy.einsumのベクトル化

  25. 25

    単純なNumpyのベクトル化

  26. 26

    tidyverseのベクトルからファクターレベルを再コード化する方法は?

  27. 27

    非スカラー出力のNumpyベクトル化関数

  28. 28

    この反復的なC ++コードを「ベクトル化」する方法は?

  29. 29

    Pythonでのnumpyを使用したループのベクトル化/最適化

ホットタグ

アーカイブ