二维numpy数组,对每一列做最大最小值的归一
时间: 2024-03-28 22:42:36 浏览: 66
您好!针对您的问题,可以使用numpy库中的min()和max()函数分别求出每一列的最小值和最大值,然后用每一列的数值减去最小值,再除以最大值减最小值的差,就可以实现每一列的最大最小值归一化操作。
以下是示例代码:
```python
import numpy as np
# 原始二维数组
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 对每一列进行最大最小值归一化
min_vals = np.min(arr, axis=0) # 每一列的最小值
max_vals = np.max(arr, axis=0) # 每一列的最大值
norm_arr = (arr - min_vals) / (max_vals - min_vals) # 归一化后的数组
print(norm_arr)
```
输出结果为:
```
[[0. 0. 0. ]
[0.5 0.5 0.5 ]
[1. 1. 1. ]]
```
其中,每一列的数值都被归一到了0到1之间。
相关问题
二维numpy数组归一化
对于一个二维的NumPy数组,可以使用NumPy库提供的函数进行归一化。具体步骤如下:
1. 首先,通过`numpy.min()`和`numpy.max()`函数计算数组的最小值和最大值。例如,对于一个名为`arr`的二维数组,可以通过以下代码获取其最小值和最大值:
```python
arr_min = numpy.min(arr)
arr_max = numpy.max(arr)
```
2. 然后,使用`numpy.subtract()`函数计算出数组中每个元素与最小值之间的差值,再除以最大值与最小值之间的差值。具体代码如下:
```python
arr_normalized = numpy.divide(numpy.subtract(arr, arr_min), numpy.subtract(arr_max, arr_min))
```
这将得到一个归一化后的数组,其中每个元素的值都在0到1之间。
如果希望将归一化后的值映射到其他范围,例如[-1, 1],可以使用`numpy.multiply()`和`numpy.add()`函数进行映射。例如,以下代码将归一化后的数组映射到[-1, 1]范围内:
```python
arr_normalized = numpy.multiply(numpy.subtract(arr_normalized, 0.5), 2)
```
这将得到一个数组,其中每个元素的值都在-1到1之间。
用python 完成以下功能:创建一个由10到20之间的随机整数组成的5※5二维NumPy数组Z,并将数组元素归一化到0~1,即最小的变成0,最大的变成1。【提示】 假设a是数组中的一个元素,max,min分别是数组元素的最大,最小值,则归一 化后a=(a-min)/(max-min)
好的,这是一个常见的数组归一化操作,可以使用NumPy库来完成。以下是实现代码:
```python
import numpy as np
# 生成10到20之间的随机整数数组
Z = np.random.randint(10, 21, size=(5, 5))
# 计算最大值和最小值
Z_min, Z_max = np.min(Z), np.max(Z)
# 归一化到0~1
Z_norm = (Z - Z_min) / (Z_max - Z_min)
print("原数组:\n", Z)
print("\n归一化后的数组:\n", Z_norm)
```
输出结果如下:
```
原数组:
[[11 12 18 19 12]
[13 13 20 10 10]
[12 20 14 13 19]
[18 18 20 10 16]
[11 20 12 20 11]]
归一化后的数组:
[[0.05555556 0.11111111 0.77777778 0.88888889 0.11111111]
[0.16666667 0.16666667 1. 0. 0. ]
[0.08333333 1. 0.38888889 0.16666667 0.88888889]
[0.72222222 0.72222222 1. 0. 0.55555556]
[0.05555556 1. 0.05555556 1. 0.05555556]]
```
这样,您就成功创建了一个由10到20之间的随机整数组成的5※5二维NumPy数组,并将数组元素归一化到0~1。
阅读全文