Numpy学习笔记(三)

2022-08-11 16:56:45 浏览数 (1)

通过前两次的学习,我们已经对numpy这个工具有了相当的认识了,基本可以满足我们日常数学计算的功能了。那么还有那些地方需要我们补充呐,老实说咋也是摸着石头过河,咋也不晓得,只能说我们一起探索吧。

1.数组的一些运算

对于一个数组来说,我们经常需要计算其绝对值,我们就可以采用np.abs()来计算。

代码语言:javascript复制
    tian=np.linspace(-10,10,20)
    print(tian)
    tian=np.abs(tian)
    print(tian)

除了绝对值之外,我们可能还需要计算平方根,那就用np.sqrt()吧

代码语言:javascript复制
    tian=np.linspace(1,3,3)
    tian=tian*tian
    print(tian)
    print(np.sqrt(tian))

当然咋上边这种姿势计算平方太low了,快用np.square()吧

代码语言:javascript复制
    tian=np.square(tian)
    print(tian)

求对数也是很简单,so 看这里,当然这里只提供一个简单的示例。

代码语言:javascript复制
    tian=np.arange(1,10,1)
    print(tian)
    print(np.log10(tian))

当然还有计算元素的天花板呀还有地花板什么的,np.ceil(),np.floor()这个就比较简单了,这里就不说了。在对元素进行四舍五入的时候用np.rint()。

代码语言:javascript复制
    tian=np.rint(tian)
    print(tian)

对于元素的指数值来说,采用方法np.exp(),也就是e^x的这种方式。

代码语言:javascript复制
    tian=np.arange(1,3,1)
    tian=np.exp(tian)
    print(tian)

Numpy居然也帮我们判断了元素的正负号,np.sign()

代码语言:javascript复制
    tian=np.linspace(-1,5,6)
    print(np.sign(tian))

这块我们也可以将两个数组进行合并,然后将对应元素的最大值合并成一个新的数组。同样的我们可以采用np.minmum()函数形成最小元素的新数组。同样的我们可以对两个数组进行mod运算,将最终的余数作为新的数组。没有想到的是numpy居然还提供了符号拷贝的函数,np.copysign(a,b)表示将b的符号拷贝到a数组对应的位置。不晓得现实有这种需求么。

代码语言:javascript复制
    tian=np.linspace(-1,5,6)
    zhang=np.linspace(2,6,6)
    print(np.sign(tian))
    print(np.maximum(tian,zhang))

2.文件的操作

有时候吧,计算一次结果挺不容易的,半途而废就太可惜了。所以numpy提供了文件操作的功能,看这里。

1、保存为文件

代码语言:javascript复制
tian=np.arange(1,100,1)
#参数这里的tianjingle.txt是文件名称
#fmt元素的格式,%d表示整数,%.2f表示浮点数保留两位小数
np.savetxt('tianjingle.txt',tian,fmt="%d",delimiter=",")

2、读取文件

#参数分别为文件名称,dtype是读取出来的数据的类型,delimiter表示数据的分割,unpack表示是否填充到不同的字段中

代码语言:javascript复制
    tian=np.loadtxt("tianjingle.txt",dtype=np.int64,delimiter=",",unpack=False)
    print(tian)

文件咋学这些就够了。

3.numpy的一些统计函数

代码语言:javascript复制
    #平均值
    print(np.mean(tian))
    #加权平均值
    print(np.average(tian))
    #标准差
    print(np.std(tian))
    #计算方差
    print(np.var(tian))
    #最大值与最小值的差
    print(np.ptp(tian))
    #中位数
    print(np.median(tian))

4.numpy计算梯度

Numpy提供了gradient()函数提供了梯度计算的功能,我们试试看哈。算了,这块以后用到了再研究吧,梯度的最后都是减法,想着很简单,但是为了一个比较准确的原因。有时候需要进行一些统计工作。作者这里都是等差数列,所以梯度为1

代码语言:javascript复制
print(np.gradient(tian))

5.Numpy在图片的上的小应用

代码语言:javascript复制
    file="C:\Users\Administrator\Desktop\新建文件夹\IMG_20201002_161629.jpg"
    tian=np.array(Image.open(file).convert('L'))
    tian=tian.astype(np.int8)
    image=Image.fromarray(tian)
    image.save("tianj.png")
    im=Image.open("tianj.png")
    im.show()

安了~

0 人点赞