human
MINおよびMAXの提供された値でMIN-MAX正規化を行うPython関数を書きます。提供された値はオプションになる可能性があることに注意してください。すべてのエッジケースを処理し、numpyを使用します。
gpt
最小-最大正規化は、特定の範囲（通常は0～1）に収まるように値を再スケーリングします。この場合、0～1の範囲に再スケーリングすると仮定します。最小値は0に、最大値は1に変換され、その間の値はすべて0～1の数値に変換されます。

欠落値はnumpyでは`nan`として表すことができます。このケースを処理するために、すべての `nan` 値を無視し、そのまま通過させます。提供されたデータが提供された最小値や最大値から外れるようなエッジケースを処理する必要があります。

```python
import numpy as np

def min_max_normalize(data, provided_min=None, provided_max=None):
    # If no data is provided, there is nothing to normalize
    if data is None:
        return None

    min = np.nanmin(data)
    if provided_min is not None:
        if provided_min > min:
            # Ensure we don't have any values less than the minimum
            data = np.maximum(data, provided_min)
        min = provided_min

    max = np.nanmax(data)
    if provided_max is not None:
        if provided_max < max:
            # Ensure we don't have any values greater than the maximum
            data = np.minimum(data, provided_max)
        max = provided_max

    range = max - min
    return (data - min) / range
```

この関数は次のように使うことができる：
```python
data = np.array([-17, 2, np.nan, 13, 35, 9000, -123])
normalized_data = min_max_normalize(data, -50, 50)
print(normalized_data)
```

出力
```
[0.33 0.52  nan 0.63 0.85 1.   0.  ]
```

お役に立てれば幸いです。
human
提供された最小値と最大値が等しいエッジケースを処理するために、この関数をどのように変更しますか？