首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于部分行的最小-最大归一化

基于部分行的最小-最大归一化
EN

Stack Overflow用户
提问于 2022-04-21 22:46:52
回答 1查看 53关注 0票数 0

我有一个numpy数组,我希望根据行的固定窗口大小的最大值和最小值来规范数组,然后使用x_normal = (x-min)/(max-min)

例如,在下面的数组中,我选择每行中每个4列的最大值和最小值。对于第一行,4列(3,5,3,3) min和max为3,5,然后是(3-3/5-3,5-3/5-3, 3-3/5-3, 3-3/5-3),然后对于(9,2,2,5),min和max为2,9,然后是(9-2/9-2, 2-2/9-2,2-2/9-2, 5-2/9-2)等等。

代码语言:javascript
运行
复制
import numpy as np
x = np.array([
       [3, 5, 3, 3, 9, 2, 2, 5, 1, 0, 7, 2],
       [4, 4, 8, 4, 3, 1, 4, 8, 7, 6, 1, 4]
       ])

output:

x = np.array([
       [0, 1, 0, 0, 1, 0, 0, 3/7, 1/6, 0, 1, 2/6],
       [0, 0, 1, 0, 2/7, 0, 3/7, 1, 1, 5/6, 0, 3/6]
       ])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-21 23:11:15

代码语言:javascript
运行
复制
import numpy as np
import numpy.typing as npt


def normalize(array: npt.NDArray) -> npt.NDArray:
    minimum = np.expand_dims(np.min(array, axis=1), axis=1)
    maximum = np.expand_dims(np.max(array, axis=1), axis=1)
    return (array - minimum) / (maximum - minimum)

x = np.array([
    [3, 5, 3, 3, 9, 2, 2, 5, 1, 0, 7, 2],
    [4, 4, 8, 4, 3, 1, 4, 8, 7, 6, 1, 4]
]).astype(float)

windows_size = 4
for i in range(0, x.shape[1], windows_size):
    x[:, i: i + windows_size] = normalize(x[:, i: i + windows_size])

这一办法:

  • 选择滑动窗口大小
  • 采用具有指定窗口大小的子数组
  • 计算每列
  • 执行减除和除法每列

<代码>F 210

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71961646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档