gpt4 book ai didi

python - 带有数组和标量的 Numpy 数学?

转载 作者:行者123 更新时间:2023-11-28 21:27:43 26 4
gpt4 key购买 nike

这里是 Numpy 新手。我正在尝试规范化(也称为特征缩放、标准化)我对神经网络的输入。我只是做线性缩放,我使用的公式是:

I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)

其中 I 是缩放输入值,Imin 和 Imax 是缩放值的所需最小和最大范围,D 是原始数据值,Dmin 和 Dmax 是原始数据值的最小和最大范围。我想要一个 python 方法,它接受一个 numpy 数组并返回一个所有值都标准化的数组。这是我目前的想法。

def get_normalized_values(array):
"""I = Imin + (Imax-Imin)*(D-Dmin)/(Dmax-Dmin)"""
imin = -1
imax = 1
dmin = array.amin()
dmax = array.amax()

normalized = imin + (imax - imin)*(array - dmin)/(dmax - dmin)

return normalized

我的问题是这行得通吗?或者我是否必须遍历数组中的每个元素并执行数学运算?你能用数组和标量做这样的数学吗?也就是说,array - dmin 是否会创建一个新的临时数组,其中每个值都减去了 dmin?不确定这是否是正确的术语,但我认为这是一种“矢量化”方法?

更新

有没有办法让它就地修改数组?那不是返回数组的副本,而是让函数获取数组并修改原始数组吗?

最佳答案

我认为您需要将调用 amin()amax() 更改为仅调用 min()max(),如 my_array.max() 中所示。

否则,这应该可以正常工作。您可以在 NumPy 中执行与 Octave/Matlab 非常相似的操作,例如将标量添加到数组,它会自动知道将操作映射到所有元素。有时,您可能需要稍微不同的语法(例如了解 numpy.linalg.dot() 和仅将两个数组相乘之间的区别),但一般来说,像这样的事情就像您所指出的那样简单。

关于python - 带有数组和标量的 Numpy 数学?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10148488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com