numpy学习笔记

这篇博客深入探讨了numpy库中的多个函数,包括np.fromfunction()用于创建数组,np.mean()和np.average()计算平均值,np.diag()设置对角线元素,以及np.intersect1d()找到数组交集。还讨论了如何提取数组的整数部分,对二维数组进行排序和交换行,计算欧式距离,求逆矩阵并验证,以及numpy.linalg模块中的线性代数操作。此外,文章对比了resize()、reshape()、np.tile()、np.repeat()以及np.matrix和np.array的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

np.fromfunction( ):

np.fromfunction(function, shape, **kwargs ):
通过对坐标轴上的坐标(0, 1, 2, 3……),执行 function 函数来计算出大小为 shape 的 array. 注: *args是可变的positional arguments列表,**kwargs是可变的keyword arguments列表


np.mean() 与 np.average():

np.mean(): 计算算数平均值

np.average(a, axis=None, weights=None, returned=False): 计算加权平均值,其中 returned 参数: Default is False. If True, the tuple (average, sum_of_weights) is returned.


np.diag():

np.diag(): 用于设置对角线附近的值


np.intersect1d():

np.intersect1d(ar1, ar2, assume_unique=False): 1d:输出的是一维 array.


提取数组的整数部分

使用5种不同的方法提取一个随机数组的整数部分:

Z = np.random.uniform(0,10,10)
print("原始值: ", Z)
print ("方法 1: ", Z - Z%1)
print ("方法 2: ", np.floor(Z))
print ("方法 3: ", np.ceil(Z)-1)
print ("方法 4: ", Z.astype(int))
print ("方法 5: ", np.trunc(Z))

将二维数组按照第三列从上到下进行升序排列:

Z = np.random.randint(0,10,(5,5))
print("排序前:\n",Z)
Z[Z[:,2].argsort()]

总结:argsort(), argmin(), argmax() 找出所求值的索引,但对于二维或多维数组来说就是在操作一行或者一列了,对于二维可以用 amax()


将二维数组的前两行进行顺序交换:

A = np.arange(25).reshape(5,5)
print(A)
A[[0,1]] = A[[1,0]]
print(A)

计算两个数组之间的欧式距离:

a = np.array([1, 2])
b = np.array([7, 8])
#数学计算方法,即公式硬怼
print(np.sqrt(np.power((8-2), 2) + np.power((7-1), 2)))
#NumPy 计算
np.linalg.norm(b-a)

求逆矩阵并验证:

matrix = np.array([[1., 2.], [3., 4.]])
inverse_matrix = np.linalg.inv(matrix)

验证原矩阵和逆矩阵的点积是否为单位矩阵

assert np.allclose(np.dot(matrix, inverse_matrix), np.eye(2))


numpy.linalg

numpy.linalg: linalg = linear + algebra
np.linalg.inv():矩阵求逆
np.linalg.det():矩阵求行列式(标量)
np.linalg.norm(x, ord=None, axis=None, keepdims=False): ord: 默认为求第二范数,可以为1(|x1|+|x2|+…+|xn|), 2, np.inf(max(|xi|))


np.squeeze():

Remove single-dimensional entries from the shape of an array.

x = np.array([[[0], [1], [2]]])
x = np.squeeze(x, axis=(0, 2))
print(x)
#输出结果:[0 1 2]

resize()和reshape()的区别

如a.reshape((2,3)) 不会真的改变a的形状,但resize会


np.tile()和np.repeat()的区别:

a=np.array([10,20])
a.repeat([3,2]) # len([3,2]) == a.ndim(a的维度)
#结果:[10,10,10,20,20]

a.repeat([3,2],axis=1)
#结果:array([[10, 10, 10, 20, 20], 
#            [30, 30, 30, 40, 40]]) 

所以tile和repeat的区别就是tile是整个的重复,而repeat通过axis参数可以只对行或者列进行重复,但需要注意的是len(repeats)==a.shape[axis]


np matrix和array的区别:

numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). matrix是array的一个小的分支,包含于array. 所以matrix 拥有array的所有特性。
在numpy中matrix的主要优势是:相对简单的乘法运算符号。例如,a和b是两个matrices,那么a*b,就是矩阵积。而不用np.dot().

#建立matrix:
a=np.mat('4 3; 2 1')

np.multiply(a, b) 和 a*b 的区别:
np.multiply() 对array, mat都是element-wise
*对array是对应位置相乘,对mat是进行矩阵乘法运算


to be continued…

资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 无锡平芯微半导体科技有限公司生产的A1SHB三极管(全称PW2301A)是一款P沟道增强型MOSFET,具备低内阻、高重复雪崩耐受能力以及高效电源切换设计等优势。其技术规格如下:最大漏源电压(VDS)为-20V,最大连续漏极电流(ID)为-3A,可在此条件下稳定工作;栅源电压(VGS)最大值为±12V,能承受正反向电压;脉冲漏极电流(IDM)可达-10A,适合处理短暂高电流脉冲;最大功率耗散(PD)为1W,可防止器件过热。A1SHB采用3引脚SOT23-3封装,小型化设计利于空间受限的应用场景。热特性方面,结到环境的热阻(RθJA)为125℃/W,即每增加1W功率损耗,结温上升125℃,提示设计电路时需考虑散热。 A1SHB的电气性能出色,开关特性优异。开关测试电路及波形图(图1、图2)展示了不同条件下的开关性能,包括开关上升时间(tr)、下降时间(tf)、开启时间(ton)和关闭时间(toff),这些参数对评估MOSFET在高频开关应用中的效率至关重要。图4呈现了漏极电流(ID)与漏源电压(VDS)的关系,图5描绘了输出特性曲线,反映不同栅源电压下漏极电流的变化。图6至图10进一步揭示性能特征:转移特性(图7)显示栅极电压(Vgs)对漏极电流的影响;漏源开态电阻(RDS(ON))随Vgs变化的曲线(图8、图9)展现不同控制电压下的阻抗;图10可能涉及电容特性,对开关操作的响应速度和稳定性有重要影响。 A1SHB三极管(PW2301A)是高性能P沟道MOSFET,适用于低内阻、高效率电源切换及其他多种应用。用户在设计电路时,需充分考虑其电气参数、封装尺寸及热管理,以确保器件的可靠性和长期稳定性。无锡平芯微半导体科技有限公司提供的技术支持和代理商服务,可为用户在产品选型和应用过程中提供有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值