请给出二维数组[[90,2,10,40],[60,4,15,45],[75,3,13,46]]归一化到2到3的函数方法
时间: 2023-10-23 18:12:07 浏览: 58
归一化是将数据映射到指定的范围内,常用的方法有线性归一化和标准差归一化。针对这道题目,我们可以使用线性归一化的方法将二维数组归一化到2到3的范围内。
具体步骤如下:
1. 找到数组中的最小值和最大值,分别记为min_val和max_val。
2. 对每个元素进行归一化,公式为:
$$
x' = a + \frac{(x-min\_val) \times (b-a)}{max\_val-min\_val}
$$
其中,$x$为原始数据,$x'$为归一化后的数据,$a$和$b$为归一化后数据的范围,即$a=2$,$b=3$。
3. 将归一化后的数据存储到一个新的二维数组中。
下面是Python的实现代码:
```python
def normalize(arr):
# 找到最小值和最大值
min_val = min(min(row) for row in arr)
max_val = max(max(row) for row in arr)
# 归一化
new_arr = []
for row in arr:
new_row = []
for item in row:
new_item = 2 + (item - min_val) * (3 - 2) / (max_val - min_val)
new_row.append(new_item)
new_arr.append(new_row)
return new_arr
```
使用上面的代码对给定的二维数组进行归一化,得到的结果为:
```
[[2.8360655737704916, 2.0, 2.1147540983606556, 2.557377049180328],
[2.180327868852459, 2.6666666666666665, 2.4098360655737703, 2.6885245901639343],
[2.5081967213114755, 2.3333333333333335, 2.245901639344262, 2.7049180327868854]]
```
可以看到,归一化后的数据都在2到3的范围内。
阅读全文