python代码基础知识总结(二)(numpy库简单总结)

本文介绍了Python数据分析的基础库Numpy,包括其在矩阵运算、数据初始化和降维等方面的优势。通过实例展示了如何使用Numpy进行数组操作,如元素级加法、重塑和堆叠,强调了其在大数据计算中相比列表的高效性。
摘要由CSDN通过智能技术生成

python代码基础知识总结(二)

一、理论分析

如果想要在Al里混的很好,一些用起来得心应手的库必须要学会。比如numpy、pandas、matplotlib。这些都是针对python封装好的模块。我们在写代码时,只需要调用他们,然后记住它的函数名和参数就可以简单实现它的功能。
这里我们简单介绍一下python的简单库的使用。

  1. Numpy (Numerical Python)是Python的一种开源的数值计算扩展。它的底层是用C语言编写的,相比于python自身的运算速度更快。
  2. Pandas (pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)它是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。
  3. Matplotlib 是将matilb的强大绘图能力集成的库,具有强大的绘图能力。

二、代码分析

2.1 传统列表使用的困难

python是相对高级的语言,如果做大数据计算时,速度相对与C,C++十分缓慢,因此为了缓解这一问题numpy库应运而生。我们先来一个例子说明列表计算的不方便。

#调用numpy库
import numpy as np
#这个程序的意思就是调用numpy的包,为了下面调用的简写方便,我们将他改写为np
#类似的还有pandas,与plt

a=[1,2,3,4]
b=[5,6,7,8]
c=a+b #我想实现a和b对应元素相加

print(c)

#[1, 2, 3, 4, 5, 6, 7, 8]
#输出将列表连接了

d=[]
for i in range(0,len(a)):
    d.append(a[i]+b[i])
print(d)
#[6, 8, 10, 12]

print(type(d))
#list
#可以看到d的类型是列表,说明了列表的加法对应列表的相连

可以看到,我在做两个列表相加时,结果是两个列表相连,这就很不合乎我们运算的习惯。由于相对于数据,更多的时矩阵之间的运算。这就很不适合。因此我们更多使用numpy库。

2.2 numpy的引入

arr_a=np.array(a)
print(arr_a)
#array([1, 2, 3, 4])

arr_b=np.array(b)
arr_b
#array([5, 6, 7, 8])
print(type(arr_a))
#numpy.ndarray

print(arr_a+arr_b)
#array([ 6,  8, 10, 12])

可以看到array数据类型的加法实现了对应元素的相加
讲到这里不得不说numpy的一个强大的功能,广播,举个例子,比如上面的arr_a,我想它每个元素都加1,必须要在一个和他一样大小的array而且元素必须都是1的吗?

print(arr_a+1)
#array([2, 3, 4, 5])
print(arr_a.shape)
#(4,)
#这里可以看到不要求大小相同,他会自动每个加一。

cc=np.array([[1,2,3,4],[5,6,7,8]])
print(cc)
#array([[1, 2, 3, 4],[5, 6, 7, 8]])
print(cc.shape)
#(2, 4)

data=np.linspace(-5,5,20)
print(data)
#array([-5.        , -4.47368421, -3.94736842, -3.42105263, -2.89473684,
#       -2.36842105, -1.84210526, -1.31578947, -0.78947368, -0.26315789,
#        0.26315789,  0.78947368,  1.31578947,  1.84210526,  2.36842105,
#        2.89473684,  3.42105263,  3.94736842,  4.47368421,  5.        ])
#可以看到linspace函数自动的产生了从-5到5(闭区间)的20等分的数字。可以看到实际是要产生20个的元素。因为是从0开始计算所以可能与与其计算不同。每次变换10/19.

data=np.linspace(-5,5,21)
print(data)
#array([-5. , -4.5, -4. , -3.5, -3. , -2.5, -2. , -1.5, -1. , -0.5,  0. ,
#        0.5,  1. ,  1.5,  2. ,  2.5,  3. ,  3.5,  4. ,  4.5,  5. ])
print(type(data))
#numpy.ndarray

date=np.arange(-5,5,2)
print(date)
#array([-5, -3, -1,  1,  3])
#而arange方法产生从-5到5(左闭右开),步长为2的array数据
print(type(date))
#numpy.ndarray

2.3 numpy 数据类型初始化

这个名字或许不太恰当,是我自己认为的。但是也算沾边,类似定义一个你想要多大的矩阵来运算。

print(np.ones([5,3]))
'''
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])
'''
#这里可以看到产生了5行三列的单位矩阵

print(np.zeros([5,3]))
'''
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])
'''
#这里可以看到产生了5行三列的零矩阵

print(np.eye(5,5))
'''
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])
'''
#这里可以看到产生了5行三列的对角矩阵

x=np.arange(12)
print(x)
#array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
#如果仅仅给arrange一个数字的话,他会输出一个从0到比数字小一的一个array数据类型
x=x.reshape(3,4)
'''
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
'''
#可以看到reshape可以将矩阵重构,第一个参数代表重构后的行数,第二个参数代表重构后的列数

#这里说一个小技巧,就是我不一定俩个参数都给,因为如果一个参数已知,另一个参数可以计算出来,那么其实我可以给参数赋值-1,python内部将会自动运算出结果。
x=x.reshape(-1,2)
'''
array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11]])
'''

#讲到重构类型,不得不说到将复杂的数据进行降维。

2.4 数据类型的降维函数ravel,flatten

y=x.reshape(1,-1)
print(y)
#array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11]])
print(y.shape)
#(1,12)
#可以看到数据还是二维的,有没有其他的方法呢?

m=x.ravel()
print(m)
#array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
print(m.shape)
#(12,)
n=y.flatten()
print(n)
#array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

2.5 numpy 数据之间的堆叠vstack,hstack

a=np.array([[1,2,3,4],[5,6,7,8]])
print(a)
'''
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
'''
b=np.array([[11,12,13,14],[21,22,23,24]])
print(b)
'''
array([[11, 12, 13, 14],
       [21, 22, 23, 24]])
'''
c=np.vstack([a,b])
print(c)
'''
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [11, 12, 13, 14],
       [21, 22, 23, 24]])
'''
#这个不难记,背个单词vertical 垂直的。我相信你记住了这个方法了,哈哈。类似的还有np.c_[a, b] column 列不动行相加
d=np.hstack([a,b])
print(d)
'''
array([[ 1,  2,  3,  4, 11, 12, 13, 14],
       [ 5,  6,  7,  8, 21, 22, 23, 24]])
'''
#来再来背一个单词horizontal 水平的。类似的还有np.r_[a, b] row 行不动列相加

小结

这里我就简单说了一些常用的numpy使用的方法,这个是学习python高阶内容最入门的一个包了。读者必须要搞明白它的用法和使用机制,这样在之后学习深度学习的tensor数据类型时,才可以学的得心应手。后期会结合图像处理讲解pandas与matplotlib。小程序猿的内容永远免费展示,还希望大家读到这里,给予点赞支持!哈哈。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值