python 中 np.sum()函数 通俗易懂理解!

这一篇博客保证是我写的最清楚,最容易理解的博客!!

     众所周知,sum不传参的时候,是所有元素的总和。这里就不说了。

1 sum函数可以传入一个axis的参数,这个参数怎么理解呢?这样理解:

假设我生成一个numpy数组a,如下

>>> import numpy as np
>>> a = np.array([[[1,2,3,2],[1,2,3,1],[2,3,4,1]],[[1,0,2,0],[2,1,2,0],[2,1,1,1]]])
>>> a
array([[[1, 2, 3, 2],
        [1, 2, 3, 1],
        [2, 3, 4, 1]],

       [[1, 0, 2, 0],
        [2, 1, 2, 0],
        [2, 1, 1, 1]]])
>>> 

这是一个拥有两维的数组,每一维又拥有三个数组,这个数组里面拥有四个元素。如果我们要将这个a数组中的第一个元素1定位出来,则我们会输入a[0][0][0]。好,这个axis的取值就是这个精确定位某个元素需要经过多少数组的长度,在这里是3,,所以axis的取值有0,1,2。如果一个数组精确到某个元素需要a[n0][n1][n2][...][n],则axis的取值就是n。定位 到这里,axis的参数的取值就解释完成了。

2 理解参数axis取值对sum结果的影响:

前面说了axis的取值(以数组a为例),axis=0,1,2。在这里,精确定位到某个元素可以用a[n0][n1][n2]表示。n0的取值是0,1(数组两维),代表第一个索引;n1的取值是0,1,2(每一维数组拥有3个子数组),代表第二个索引;n2的取值是0,1,2,3(每个子数组有4个元素),代表第三个索引,这几个取值在后面会用到。

        2.1 axis = 0的时候:

     axis=0,对应n0已经确定下来,即n0取值定为0,1。所以sum每个元素的求和公式是sum = a[0][n1][n2]+a[1][n1][n2]。接下来确定sum的行数和列数,n1的取值是0,1,2,为3个数,代表行数,n2的取值是0,1,2,3,为4个数,代表列数,所以sum为3*4的数组。

      如何求sum的各个元素呢,sum = a[0][n1][n2]+a[1][n1][n2]这个公式又如何理解呢?如下。我们可以做一个表格:注意颜色


                      n2=
### 通俗易懂地解释梯度下降算法 #### 梯度下降的目标 梯度下降算法旨在找到函数的最小值点。想象站在一座山上的某处,目标是到达山谷最低点。每一步都希望朝着最陡峭的方向下坡走,直到无法再降低高度为止[^1]。 #### 数学表达 假设有一个损失函数 \( J(\theta) \),其中 \( \theta \) 表示模型参数向量。为了使这个损失尽可能小,需要调整 \( \theta \) 的值。具体来说,更新规则如下: \[ \theta := \theta - \alpha\nabla_\theta J(\theta) \] 这里: - \( \nabla_\theta J(\theta) \) 是损失函数相对于参数 \( \theta \) 的梯度; - \( \alpha \) 称为学习率,决定了每次迭代时沿负梯度方向前进的步伐大小; 当沿着该方向移动足够多次之后,最终能够接近全局最优解或局部极小值之一[^2]。 #### 实际应用案例 考虑一个简单的线性回归问题,在给定训练样本集的情况下预测房价。此时可以通过不断修正权重来减少误差平方和作为代价函数的结果,从而获得更好的拟合效果。随着不断的迭代计算新的权值组合直至收敛至最佳状态。 ```python import numpy as np def gradient_descent(x, y, learning_rate=0.01, iterations=1000): m = len(y) theta_0 = 0 theta_1 = 0 for _ in range(iterations): prediction = theta_0 + theta_1 * x error = prediction - y delta_theta_0 = sum(error) / m delta_theta_1 = sum([error[i]*x[i] for i in range(m)]) / m theta_0 -= learning_rate * delta_theta_0 theta_1 -= learning_rate * delta_theta_1 return (theta_0, theta_1) # Example usage with dummy data points x_data = np.array([1, 2, 3]) y_data = np.array([2, 4, 6]) result = gradient_descent(x_data, y_data) print(f'Theta values after training: {result}') ```
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值