[解決済み] NumPyの配列を特定の範囲に正規化する方法は?
2022-04-14 14:19:57
質問
音声や画像の配列に対して何らかの処理を行った後、ファイルに書き戻す前に、ある範囲内で正規化する必要があります。 これは、次のように行うことができます。
# Normalize audio channels to between -1.0 and +1.0
audio[:,0] = audio[:,0]/abs(audio[:,0]).max()
audio[:,1] = audio[:,1]/abs(audio[:,1]).max()
# Normalize image to between 0 and 255
image = image/(image.max()/255.0)
もっと冗長でなく、便利な機能の方法はないのでしょうか?
matplotlib.colors.Normalize()
は関係なさそうですね。
解決方法は?
audio /= np.max(np.abs(audio),axis=0)
image *= (255.0/image.max())
使用方法
/=
と
*=
を使えば、中間の一時的な配列が不要になり、メモリを節約することができます。 乗算は除算よりコストがかからないので
image *= 255.0/image.max() # Uses 1 division and image.size multiplications
よりもわずかに速いです。
image /= image.max()/255.0 # Uses 1+image.size divisions
ここでは基本的なnumpyのメソッドを使用しているので、numpyではこの程度が効率的な解決策だと思います。
インプレース操作では、コンテナ配列の dtype は変更されません。正規化したい値は浮動小数点数なので
audio
と
image
配列は、インプレース操作を実行する前に浮動小数点数の dtype を持つ必要があります。
もし浮動小数点型でないなら,配列の型を変換するために
astype
. 例えば
image = image.astype('float64')
関連
-
PythonによるLeNetネットワークモデルの学習と予測
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] JavaScriptで配列を空にするにはどうしたらいいですか?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] JavaScriptには、与えられた範囲内の範囲を生成する "range() "のようなメソッドがありますか?
-
[解決済み】配列に何かを追加する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み】最小値と最大値がわかっている数値の範囲を縮小する方法