python - 动态规范化 2D numpy 数组

标签 python arrays numpy normalization

我有一个形状为 (100000, 1024) 的二维 numpy 数组“信号”。每行都包含信号幅度的轨迹,我想将其归一化为 0-1 之内。
每个信号都有不同的幅度,所以我不能只除以一个公因数,所以我想知道是否有办法对每个信号进行归一化,使它们中的每个值都在 0-1 之间?
假设信号看起来像 [[0,1,2,3,5,8,2,1],[0,2,5,10,7,4,2,1]] 并且我希望它们变成 [[0.125,0.25,0.375,0.625,1,0.25,0.125],[0,0.2,0.5,0.7,0.4,0.2,0.1]]。
有没有办法在不循环所有 100,000 个信号的情况下做到这一点,因为这肯定会很慢?
谢谢!

最佳答案

简单的事情是生成一个新的 numpy 数组,其中的最大值按轴并除以它:

import numpy as np

a = np.array([[0,1,2,3,5,8,2,1],[0,2,5,10,7,4,2,1]])

b = np.max(a, axis = 1)

print(a / b[:,np.newaxis])
输出:
[[0.    0.125 0.25  0.375 0.625 1.    0.25  0.125]
 [0.    0.2   0.5   1.    0.7   0.4   0.2   0.1  ]]

关于python - 动态规范化 2D numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62793045/

相关文章:

python - Keras + tf.Dataset + 预测

python - 二进制列表通过了解其在 python 中的长度来包含所有可能的选项

arrays - COBOL 解串到数组中

python - 为什么 numba 在 numpy linspace 中引发类型错误

python - numpy 中的平铺操作

python - 函数内局部变量的生命周期(内存范围)

python - 如何在python中引用类变量

c++ - 在c++中初始化一些数据数组

javascript - 计算 Javascript 数组的出现次数

python-3.x - 相当于 pandas.shift() 函数的 numpy 数组?