返回依然为结构相同的二维数组
时间: 2024-03-03 15:52:46 浏览: 14
如果要保持原来的维度结构,可以在函数内部先将二维数组展开成一维数组进行处理,然后再将处理后的一维数组重新变成二维数组。修改后的代码如下:
```python
import numpy as np
def stretch_array(arr):
sorted_arr = np.sort(arr.flatten())
n = arr.size
m = int(0.05 * n)
min_val = sorted_arr[m]
max_val = sorted_arr[-m-1]
stretched_arr = (arr - min_val) * (255 / (max_val - min_val))
stretched_arr[stretched_arr < 0] = 0
stretched_arr[stretched_arr > 255] = 255
stretched_arr[:m] = 0
stretched_arr[-m:] = 255
return stretched_arr.astype(np.uint8).reshape(arr.shape)
def process_array(arr):
n = arr.size
m = int(0.05 * n)
sorted_arr = np.sort(arr.flatten())
min_val = sorted_arr[m]
max_val = sorted_arr[-m-1]
arr[arr < min_val] = min_val
arr[arr > max_val] = max_val
stretched_arr = (arr - min_val) * (255 / (max_val - min_val))
stretched_arr[:m] = 0
stretched_arr[-m:] = 255
return stretch_array(stretched_arr)
```
这里在`stretch_array`函数中,最后使用`reshape`方法将处理后的一维数组重新变成原来的二维数组形状。