python数据分析学习笔记:numpy

python数据分析学习笔记:numpy

一、使用的工具

使用现在比较主流的工具:Anaconda软件中的Jupyter Notebook
1.基本介绍

一个开源的Python的发行版本,其包含了大多个科学包及其依赖项。 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)

2.功能

因为里面有大部分数据分析所用到的库,比如python数据分析三剑客numpy,pandas,matplotlib,我们不再需要通过pip指令进行再次安装,

3.下载地址:

https://www.anaconda.com/download/

注意点:使用适合自己电脑系统的版本,安装过程一般按照正常的步骤,建议在安装过程中选择Just me,仅仅个人使用,安装教程可以参考文章下面的链接,也可以自己去网上查询,网上的教程比较多,anaconda的安装难度系数不大,这里小编就不再展示

4.安装完成后可以打开anaconda,可以看到如下界面

在这里插入图片描述

5.打开方式

按下面的一种方式打开jupyter notebook,就能在自己的浏览器弹出一个端口,可以看到自己在电脑上存储的文件

方式1:在如下的界面上点击launch按钮

在这里插入图片描述

方式2:自己在电脑搜索jupyter notebook,直接打开

6.新建文件

新建一个新的python3文件,后缀名为.py,也可以在python其他的运行环境中打开

在这里插入图片描述

接下来我们就可以开始疯狂敲打我们的代码

二、numpy 的导入

import :用来导入库
as :取别名
np :numpy库的别名,一般是约定俗成的
import numpy as np

三、numpy的学习笔记

1. numpy的创建
1.1 使用np.array()创建
# 导入库
import numpy as np
# 使用dstype来规定类型,np.float32为浮点型
a = np.array([[1,2,3],[2,3,4]],dtype=np.float32)
a

输出:

array([[1., 2., 3.],
       [2., 3., 4.]], dtype=float32)
1.2 使用plt创建

matpltlib在后续会进行讲解,在这里先进行了解,由于我们知道图片是由多维数组组成的,所以我们使用imread方法来解析图片生成一个多维数组存放到arr这个数组中

import matplotlib.pyplot as plt
#将图片输出为数组
#‘./5.png’为保存图片路径
arr = plt.imread('./5.png')
arr

输出:

array([[[0.5176471 , 0.5647059 , 0.5921569 , 1.        ],
        [0.5176471 , 0.5647059 , 0.5921569 , 1.        ],
        [0.5176471 , 0.5647059 , 0.5921569 , 1.        ],
        ...,
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.28627452, 0.2901961 , 0.2901961 , 1.        ]],

       [[0.5176471 , 0.5647059 , 0.5921569 , 1.        ],
        [0.5176471 , 0.5647059 , 0.5921569 , 1.        ],
        [0.5176471 , 0.5647059 , 0.5921569 , 1.        ],
        ...,
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.28627452, 0.2901961 , 0.2901961 , 1.        ]],

       [[0.5176471 , 0.5647059 , 0.5921569 , 1.        ],
        [0.5176471 , 0.5647059 , 0.5921569 , 1.        ],
        [0.5176471 , 0.5647059 , 0.5921569 , 1.        ],
        ...,
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.28627452, 0.2901961 , 0.2901961 , 1.        ]],

       ...,

       [[0.18039216, 0.1882353 , 0.19215687, 1.        ],
        [0.18039216, 0.1882353 , 0.19215687, 1.        ],
        [0.18039216, 0.1882353 , 0.19215687, 1.        ],
        ...,
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.1882353 , 0.19607843, 0.2       , 1.        ]],

       [[0.18039216, 0.1882353 , 0.19215687, 1.        ],
        [0.18039216, 0.1882353 , 0.19215687, 1.        ],
        [0.18039216, 0.1882353 , 0.19215687, 1.        ],
        ...,
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.1882353 , 0.19607843, 0.2       , 1.        ]],

       [[0.18039216, 0.1882353 , 0.19215687, 1.        ],
        [0.18039216, 0.1882353 , 0.19215687, 1.        ],
        [0.18039216, 0.1882353 , 0.19215687, 1.        ],
        ...,
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.1882353 , 0.19607843, 0.2       , 1.        ],
        [0.1882353 , 0.19607843, 0.2       , 1.        ]]], dtype=float32)
1.3 使用np的routines函数创建

创建一个全为0的数组,用shape规定数组类型

np.zeros(shape=(2,2)) #shape为数组类型

输出:

array([[0., 0.],
       [0., 0.]])

创建一个全为0的数组,用shape规定数组类型

np.ones(shape=(2,2)) #shape为数组类型

输出:

array([[1., 1.],
       [1., 1.]])

创建一个步长为20的随机数组

np.arange(0,200,step=20) #step为步长;arrange为随机函数

输出:

array([  0,  20,  40,  60,  80, 100, 120, 140, 160, 180])

创建一个长度为10的随机数组

np.linspace(0,200,num=10) #num为长度,linspace在指定的间隔内返回均匀间隔的数字

输出:

array([  0.        ,  22.22222222,  44.44444444,  66.66666667,
        88.88888889, 111.11111111, 133.33333333, 155.55555556,
       177.77777778, 200.        ])

创建一个规定的size类型随机整型数组

np.random.randint(0,100,size=(3,4)) #size为数组类型

输出:

array([[12, 91, 47, 56],
       [10, 49, 53, 31],
       [ 6, 75, 65, 45]])

创建一个固定的随机整型数组

#固定随机函数
np.random.seed(10)
np.random.randint(0,100,(4,5))

输出:

array([[ 9, 15, 64, 28, 89],
       [93, 29,  8, 73,  0],
       [40, 36, 16, 11, 54],
       [88, 62, 33, 72, 78]])

创建一个自己规定元素的数组

#以(1,2,3)填充的2*3数组
np.full((2,3),fill_value=(1,2,3)) #fill_value为填充的数组或者元素

输出:

array([[1, 2, 3],
       [1, 2, 3]])

创建一个对角线为1,其他为0的数组

#创建一个3*3的矩阵,主对角线为1,其他为0
np.eye(3)

输出:

array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

创建与a相同类型的数组

a = [2,3]
#创建与a相同类型的数组
np.ones_like(a)
#元素为0
np.zeros_like(a)
#元素可指定
np.full_like(a,2)

输出:

array([2, 2])

创建两个数组进行合并 ,axis决定了合并的方式

(1)axis=0表示第一维度行,所以按行进行合并

a1 = np.array([[1, 2], [3, 4]])
#使用np.concatenate()函数进行合并
np.concatenate((a1, a1),axis=0) 

输出:

array([[1, 2],
       [3, 4],
       [1, 2],
       [3, 4]])

(2)axis=1表示第二维度列,所以按行进行合并

np.concatenate((a1, a1),axis=1) 

输出:

array([[1, 2, 1, 2],
       [3, 4, 3, 4]])
2.numpy的常用属性
b = np.array([[2,42,1],[3,43,2]])

数组的类型

b.shape #类型

输出:

(2, 3)

数组的维度

b.ndim #维度

输出

2

数组的元素个数

b.size #元素个数

输出

6

数组的元素类型

b.dtype #元素类型

输出:

dtype('int32')
3.索引和切片的操作(重点)

生成1个数组c

c = np.random.randint(0,100,(5,3))
c

输出:

array([[12, 92, 96],
       [62, 57, 79],
       [42, 57, 97],
       [50, 45, 40],
       [89, 73, 37]])

索引

c[1,2]

输出:

79

切出前两行

c[0:2]

输出:

array([[12, 92, 96],
       [62, 57, 79]])

切出前两列

c[:,0:2]

输出:

array([[12, 92],
       [62, 57],
       [42, 57],
       [50, 45],
       [89, 73]])

切出前两行和前两列

c[0:2,0:2]

输出:

array([[12, 92],
       [62, 57]])

将所有元素倒置

c[::-1,::-1]

输出:

array([[37, 73, 89],
       [40, 45, 50],
       [97, 57, 42],
       [79, 57, 62],
       [96, 92, 12]])

使用图片进行操作

(1)查看原图片

plt.imshow(arr)

在这里插入图片描述

(2)将图片倒置

plt.imshow(arr[::-1,::-1])

在这里插入图片描述
(3)将图片裁剪(特殊图案)


plt.imshow(arr[300:600,700:1200])

在这里插入图片描述

4. 维度变换

生成1个数组d

d = np.random.randint(1,100,(2,4,5))

输出:

array([[[ 1, 19, 24,  4, 30],
        [17, 85, 83, 15, 52],
        [80, 18, 51, 54, 26],
        [49, 18, 33, 82, 81]],

       [[42, 91, 13, 31, 82],
        [18, 17,  1, 32, 74],
        [65, 39, 23, 97, 67],
        [68, 63, 96, 28, 83]]])

改变数组的类型,容量要一致

# 2*4*5 = 2*1*20
d.reshape(2,1,20)

输出

array([[[ 1, 19, 24,  4, 30, 17, 85, 83, 15, 52, 80, 18, 51, 54, 26, 49,
         18, 33, 82, 81]],

       [[42, 91, 13, 31, 82, 18, 17,  1, 32, 74, 65, 39, 23, 97, 67, 68,
         63, 96, 28, 83]]])

使用图片进行操作

arr_1 = plt.imread('./4.jpg')
# 使用concatenate函数来组合
arr_3 = np.concatenate((arr_1,arr_1,arr_1),axis=1)
arr_9 = np.concatenate((arr_3,arr_3,arr_3),axis=0)
plt.imshow(arr_9)

在这里插入图片描述

4.numpy统计函数

生成随机数组arr2

arr2 = np.random.randint(1,100,(3,4))
arr2

输出

array([[63, 78, 49, 94],
       [76, 87, 38, 12],
       [22, 34, 96, 44]])

不同方向数组总和

arr2.sum() #全部
arr2.sum(axis=1) #按行
arr2.sum(axis=0) #按列

按列求和的输出:

array([161, 199, 183, 150])

数组的标准三角函数

np.sin(arr2)
np.cos(arr2)
np.tan(arr2)

tan的输出:

array([[ 0.16974975, -0.59918   , -3.17290855, -0.2529781 ],
       [ 0.68674769, -1.44241747,  0.31030966, -0.63585993],
       [ 0.00885166, -0.62349896, -5.45134011,  0.0177047 ]])

使用around函数使返回的值四舍五入

np.around(arr2,decimals=-1) #decimals 要舍入的小数位数,如果为负,整数将四舍五入到小数点左侧的位置

输出

array([[ 60,  80,  50,  90],
       [ 80,  90,  40,  10],
       [ 20,  30, 100,  40]])

不同方向求数组的平均值

np.mean(arr2,axis=1) #行向
np.mean(arr2,axis=0) #列向

输出:

array([53.66666667, 66.33333333, 61.        , 50.        ])

求数组的标准差

np.std(arr2,axis=1) #行向

输出:

array([16.77796174, 29.96143354, 28.23118843])

求数组的方差

np.var(arr2,axis=1) #行向

输出:

array([281.5   , 897.6875, 797.    ])
5. numpy数组运算
a1 = np.array([[1,2],[3,2]])
a2 = np.array([[1,2],[3,4]])

矩阵相乘

np.dot(a1,a2) 

输出:

array([[ 7, 10],
       [ 9, 14]])

点积

a1 * a2      

输出:

array([[1, 4],
       [9, 8]])

求数组的标准差

np.std(arr2,axis=1) #行向

输出:

array([16.77796174, 29.96143354, 28.23118843])

求数组的方差

np.var(arr2,axis=1) #行向

输出:

array([281.5   , 897.6875, 797.    ])
5. numpy数组运算
a1 = np.array([[1,2],[3,2]])
a2 = np.array([[1,2],[3,4]])

矩阵相乘

np.dot(a1,a2) 

输出:

array([[ 7, 10],
       [ 9, 14]])

点积

a1 * a2      

输出:

array([[1, 4],
       [9, 8]])

最后附上小编参考的anaconda安装教程
https://blog.csdn.net/weixin_42830697/article/details/100057713

好了,到这里基本的numpy库的学习就到这里啦,全部的内容包括了numpy数组的创建,常用属性,操作包括索引和切片,统计函数,数组运算,接下来我们将要学习pandas库的内容,希望大家点个关注,有什么问题也希望大家在评论区指出,大家一起学习,一起进步!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值