たとえば、私は形状が1000*3*256*256
のnumpyの配列a
を持っています。 つまり、a
は1000個の画像の配列で、各画像のサイズは3*256*256
です。 私はすべてのイメージをランダムに反転したいので、私の質問は効果的にこれを行う方法です。ありがとう!numpyの配列内のすべての画像をランダムに反転する最も効果的な方法
1
A
答えて
1
基本:array[slice(a,b,c)]
はarray[a:b:c]
に相当し、(「フリップ」)array[::-1]
同じである配列の使用slice(None, None, -1)
を、逆にします。
それでは、画像毎にランダムフリップを構築しましょう:
>>> import random
>> flips = [(slice(None, None, None),
... slice(None, None, random.choice([-1, None])),
... slice(None, None, random.choice([-1, None])))
... for _ in xrange(a.shape[0])]
最初のスライスは、第二Y軸のためであり、第3は、X軸用で、チャネルのためのものです。のは、いくつかのテストデータを構築してみましょう:
>>> import numpy as np
>>> a = np.array(range(3*2*5*5)).reshape(3,2,5,5)
私たちは、各画像に個別にランダムフリップを適用することができます。
>>> flips[0]
(slice(None, None, None), slice(None, None, -1), slice(None, None, None))
>>> a[0]
array([[[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]],
[[25, 26, 27, 28, 29],
[30, 31, 32, 33, 34],
[35, 36, 37, 38, 39],
[40, 41, 42, 43, 44],
[45, 46, 47, 48, 49]]])
>>> a[0][flips[0]]
array([[[20, 21, 22, 23, 24],
[15, 16, 17, 18, 19],
[10, 11, 12, 13, 14],
[ 5, 6, 7, 8, 9],
[ 0, 1, 2, 3, 4]],
[[45, 46, 47, 48, 49],
[40, 41, 42, 43, 44],
[35, 36, 37, 38, 39],
[30, 31, 32, 33, 34],
[25, 26, 27, 28, 29]]])
あなたは画像を垂直方向に反転させflips[0]
、見ることができるように。今では、各画像のためにそれを行うには簡単です:
>>> random_flipped = np.array([img[flip] for img, flip in zip(a, flips)])
+0
こんにちは、私はすべての画像をランダムに反転させることを意味します。 –
+0
ありがとう、これは私が欲しいものです。 –
関連する問題
- 1. Silverlightクライアントに画像を転送する最も効率的な方法
- 2. numpy配列のハッシュ処理に最も効率的なプロパティ
- 3. numpy配列でモードを見つける最も効率的な方法
- 4. 最も効果的なライブカウントダウンの方法
- 5. 画像を更新する最も効率的な方法
- 6. Numpy効率的なものすべてに対して
- 7. domオブジェクトのonresizeをチェックする最も効果的な方法
- 8. アンドロイドで画像を反転/反転/カールする方法
- 9. Numpyの配列の列を反復処理する方法は?
- 10. Javascriptゲームのカード画像を表示する最も効率的な方法
- 11. ネットワーク内のウェブカメラから画像をキャプチャして送信する最も効率的な方法
- 12. PHPのmutidimentional配列内のすべての配列に要素を追加する最も良い方法
- 13. Python - 2D numpy配列内の特定の値の最大領域を効率的に見つける方法
- 14. Flatindexed 2D配列 - 画像を縦方向/横方向に反転する
- 15. 回転行列をnumpyで効率的に回転するポイント
- 16. リスト内のアイテムランクを見つける最も効果的な方法は?
- 17. 鏡映効果を得るために画像を反転する
- 18. NxN行列のすべての部分行列を反復する最善の方法/最も速い方法
- 19. Androidは最も効率的な方法でサーバーに画像をアップロードします
- 20. メモリ内のstd :: stringsの2Dダイナミック配列を操作する最も効率的な方法は何ですか?
- 21. ExecutorServiceを使用して最も効果的な方法
- 22. Monotouchのスプライト(フレーム)アニメーションの最も効果的な方法
- 23. jqueryフィールドの検証を行う最も効果的な方法
- 24. Androidで文字列を格納する最も効果的な方法
- 25. 画像をランダムに回転する方法javascript?
- 26. mongodbコレクションからランダムなレコードを取得する最も単純で効果的な方法は何ですか?
- 27. オブジェクトを含む配列を縮小(結合)する最も効果的な方法は何ですか?
- 28. BitArrayの順序を逆転する最も効率的な方法は?
- 29. 効率的なpython配列からnumpy配列への変換
- 30. 配列から項目を削除する最も効率的な方法は?
あなたがそれらすべてをやっている場合、それはどのようにランダムにすることができますか? –
実際にコードを書いたことはありますか? *「ランダムなフリップごとの画像」を定義する* – SiHa
実際、この種の操作は、深い学習文献のデータ拡張と呼ばれています。私は非常に遅いかもしれないので、forループを使いたくない...私は@ BlackBearの方法を試してみるよ、ありがとう –