我有一个形状为 (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/