リージョンでの配列のスライス-Python

pceccon

n x mマスク入力を使用して配列を領域に「分割」する必要があります。

たとえば、20 x 20配列があるとします。私のマスクは次のとおりです(5 x 5)-常に:

ここに画像の説明を入力してください

ここで、数字はセルが参加する領域を表します。このマスクは入力ではなく、単なるndarray。です。このマスクは20 x 20、すべての5 x 5近所で自分スライスする方法を表しています

たとえば、最初の領域はインデックスを理解します。

(0,0)、(1,0)、(1,1)、(2,0)、(2,1)、(2,2)

配列の5 x 5近傍について、20 x 208領域にある値を返す必要があります。

私は「標準コード」でそれを行う方法を知っていますが、簡潔なコードで可能である、それを行うPythonの方法があるかどうか疑問に思います。

コード例として、次のようなことができます。

def slice_in_regions(data, x_dim, y_dim):
    for x in xrange(0, x_dim, 5):
        for y in xrange(0, y_dim, 5):
            neighbors = data[x:x+4, y:y+4]
            region1 = [neighbors[0,0], neighbors[1,0], neighbors[1,1], neighbors[2,0], neighbors[2,1], neighbors[2,2]]
            # region2, region3...

しかし、それはそれを行うための良い方法ではないようです。さらに、私のデータの次元はの倍数になることを期待しています5

ありがとうございました。

jmetz

マスクのサイズを変更するだけでよいようです。たとえば、すでに使用している場合はnumpy

mask = mask.repeat(4, axis=0).repeat(4, axis=1)
# Then you apply the mask using 
values = data[mask]

そうでなければ、

import numpy as np
mask = np.repeat(mask, 4, axis=0).repeat(4, axis=1)
# Then you apply the mask using 
values = np.array(data)[mask]

個々の地域

各地域に個別にアクセスする必要がある場合は、ラベル付きマスクを使用して前の地域に先行することができます。ラベルはラベル付きの領域に成長するため、使用できます。

values = [ data[mask==l] for l in range(1, mask.max()+1)]

ここで、値は、各項目がのラベル付き領域に対応する配列のリストになりますmask

ラベル付きマスクの生成

完全を期すために、バイナリマスクから、すべてのピクセルに独自のラベルが付いているラベル付きマスクに移行するには、次を使用できます。 scipy.ndimage.label

mask = ndimage.label(mask, [[0,0,0],[0,1,0],[0,0,0]])

または、領域ラベル付け機能の使用がやり過ぎの場合は、次を使用して同様の結果を得ることができます。

mask[mask] = range(1,mask.sum()+1)

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

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

編集
0

コメントを追加

0

関連記事

numpy配列のPythonリストでジョイントペアをすばやく見つける

NumPy配列(バージョン1.11.13、Python 2.7)で条件付きインデックスを実行する際のDeprecationWarningエラーを理解する

Pythonでのバイト配列のストリーム分割

Pythonでの2D配列インデックスエラー

Python2用のrdkitライブラリの特定のバージョンをインストールするにはどうすればよいですか?

Pythonでの配列スタッキング/連結エラー

C ++でのcharの配列のスライス(pythonからc ++)

python:1D配列のnumpy配列スライシング

Numpy Python配列のスライス

pipは間違ったバージョンのPythonでPythonライブラリをインストールします

Pythonでのインスタンス化のバリエーション

リスト/ numpy配列のPythonバランシングアイテム

Selenium Webdriver、numpy配列としてのスクリーンショット(Python)

Pythonでインストールされているライブラリのバージョンを見つける方法は?

Pythonで2つのリストをマージするランタイム

Pythonでのvlauesの2D配列スライシングと置換

Pythonでオンラインゲームのスクリーンショットを撮る最速の方法

インタープリターでのPythonクラスの出力

toxでのリリース候補Pythonバージョンの一時的な使用

Python変数をパイプラインのダウンストリームジョブに渡す方法

メインバージョンを知っているPythonインストーラーの最新バージョンをBashでダウンロードする

Python3フラスコアプリケーションでのpymongoインポートエラー

Pythonで配列内のエントリを見つけるためにインデックスを使用する際のエラー

パンダ-サイズ1の配列のみをPythonスカラーに変換できます

パンダはサイズ1の配列のみをPythonスカラーに変換できます

numpy配列でのスライスとPythonでのリストのスライスの違いは何ですか?

Pythonバージョン3.2でのTkinterのインストール

Windows での Python および PyWinAuto バージョンのインストール

Pythonの配列インデックスでのNoneの使用

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ