python数据分析三剑客之numpy模块

目录

一、数组的创建

1、直接创建法

2、导入图片数据

二、索引与切片

1、索引

2、切片

三、数组倒序

 四、联级操作

1、按列拼接

2、按行拼接

3、镜像效果

 五、常用函数

1、能按行按列按全部的

2、针对各个元素的

六、数组计算

1、数组与数之间

2、数组与数组之间


导入numpy模块

import numpy as np

一、数组的创建

1、直接创建法

  • 创建一维数组

>>> np.array([1,2,3,4,5])
array([1, 2, 3, 4, 5])
  • 创建多维数组

>>> x=np.array([[1,2,3],[3,2,1],[1,3,5]])    #c创建多维数组
>>> x
array([[1, 2, 3],
       [3, 2, 1],
       [1, 3, 5]])

注:数组中存储的数据元素类型必须是统一类型

  • 数组信息

数组的信息主要有形状、维度、元素个数、数据类型

>>> x.shape    #返回数组形状
(3, 3)
>>> x.ndim     #维度
2
>>> x.size     #返回数组中元素个数
9
>>> x.dtype    #数组元素的数据类型
dtype('int32')
  • 数据类型

数据类型

含义

bool_

布尔型数据类型(True 或者 False)

int_

默认的整数类型(类似于 C 语言中的 long,int32 或 int64)

int8

字节(-128 to 127)

int16

整数(-32768 to 32767)

int32

整数(-2147483648 to 2147483647)

int64

整数(-9223372036854775808 to 9223372036854775807)

uint8

无符号整数(0 to 255)

uint16

无符号整数(0 to 65535)

uint32

无符号整数(0 to 4294967295)

uint64

无符号整数(0 to 18446744073709551615)

float_

float64 类型的简写

float16

半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位

float32

单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位

float64

双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位

complex_

complex128 类型的简写,即 128 位复数

complex64

复数,表示双 32 位浮点数(实数部分和虚数部分)

complex128

复数,表示双 64 位浮点数(实数部分和虚数部分)

优先级:字符型 > 浮点型 > 整数

即元素中有字符串,就会自动把所有元素转化为字符型,如果有浮点型没有字符型,就会把全部元素转化为浮点型!!

  • 数据类型的转换

  创建时指定数据类型

>>> x=np.array([2,3,4.9],dtype='int32')     #不会四舍五入

  创建后改变数据类型

>>> x.astype('float32')      #本身不会改变
  • 特殊数组的生成

①生成全是0的数组

>>> np.zeros(shape=(2,3))
array([[0., 0., 0.],
       [0., 0., 0.]])

②生成全是1的数组

>>> np.ones(shape=(2,3))
array([[1, 1, 1],
       [1, 1, 1]])

③生成对角为1的数组

>>> np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

④生成一维形式的等差数列(定义的是项数)

>>> np.linspace(0,5,num=6) 
array([0., 1., 2., 3., 4., 5.])

⑤生成一维形式的等差数列(定义的是公差)

>>> np.arange(0,50,6)
array([ 0,  6, 12, 18, 24, 30, 36, 42, 48])

⑥返回指定形状的随机数组

>>> np.random.randint(0,10,size=(3,4))
array([[5, 5, 8, 9],
       [3, 1, 6, 5],
       [5, 5, 9, 7]])

⑦生成0-10范围的随机数数组

>>> np.random.random(size=(3,4))*10
array([[4.86114612, 8.36192305, 6.83952419, 2.55308495],
       [3.75599323, 9.50338547, 7.77433671, 4.67607018],
       [0.5499611 , 4.02845397, 2.15653202, 1.7318143 ]])
  • 改变数组形状

>>> x=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
>>> y=x.reshape((2,6))      #先排行后排列,元素数必须相等
>>> y
array([[ 1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12]])

2、导入图片数据

>>> import matplotlib.pyplot as plt
>>> picture = plt.imread('./lxg.jpg')   #导入图片
>>> plt.imshow(picture)  #查看图片

   <matplotlib.image.AxesImage at 0x2b1c32de6d8>

变量picture是一个三维数组,第一维表示,第二维表示,第三维表示颜色

二、索引与切片

1、索引

>>> x=np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])
>>> x
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15]])

先行后列,索引下标都是从0开始

>>> x[2][1]
12

2、切片

  • 切出数组的前两行

>>> x[0:2]
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
  • 切出数组的前两列

>>> x[:,0:2]
array([[ 1,  2],
       [ 6,  7],
       [11, 12]])
  • 切出前两行的前两列

>>> x[0:2,0:2]
array([[1, 2],
       [6, 7]])
  • 切出以及第一行和第三行,第三列第四列第五列

>>> x[[0,2],2:5]
array([[ 3,  4,  5],
       [13, 14, 15]])

三、数组倒序

以图片为例,方便对比

  • 将图片进行上下翻转(即将横坐标倒序)

>>> plt.imshow(picture[::-1,:,:])
 <matplotlib.image.AxesImage at 0x281e8e4e3c8>

  • 将图片进行左右翻转(即将列坐标倒序)

>>> plt.imshow(picture[:,::-1,:])
<matplotlib.image.AxesImage at 0x281e8ea8898>

 四、联级操作

 即数组的连接

  • 按行拼接时,行数必须相等,按列拼接时,列数必须相等
  • axis=0 表示按列
  • axis=1 表示按行
>>> x1=picture    #原图
>>> x2=picture[::-1,:,:]   #上下翻转
>>> x3=picture[:,::-1,:]  #左右翻转
>>> y1=np.concatenate((x1,x2),axis=0)    #按列拼接
>>> y2=np.concatenate((x1,x3),axis=1)    #按行拼接

1、按列拼接

>>> plt.imshow(y1)
<matplotlib.image.AxesImage at 0x281ec5b1860>

2、按行拼接

>>> plt.imshow(y2)
<matplotlib.image.AxesImage at 0x281ec832550>

3、镜像效果

>>> y3=y1[:,::-1,:]
>>> y4=np.concatenate((y1,y3),axis=1)    #按行拼接
>>> plt.imshow(y4)
 <matplotlib.image.AxesImage at 0x281ec54c748>

 五、常用函数

注:X表示数组

1、能按行按列按全部的

  • X.sum() 求和
  • X.max() 最大值
  • X.min() 最小值
  • X.mean() 平均数
  • X..var() 方差
  • X.std 标准差
  • X.np.median(X,) 中位数
  • np.ptp(X,) 最大值与最小值的差
>>> x=np.array([[2,7,3],[3,2,1],[1,3,5]]) 
>>> a=x.max(axis=1)    #按行
>>> b=x.max(axis=0)    #按列
>>> c=x.max()          #默认全部
>>> print(a,b,c)
[7 3 5] [3 7 5] 7

2、针对各个元素的

  • np.sin(X) 正弦
  • np.cos(X) 余弦
  • np.tan(X) 正切
  • np.around(X,decimals=k) 四舍五入,k=0时保留整数,1时保留1位小数,2时保留2位小数,-1时保留到十分位数.....
  • X.T 转置,矩阵时

六、数组计算

>>> x=np.array([[2,1],[4,3]])
>>> y=np.array([[1,2],[1,0]])

1、数组与数之间

无论加减乘除都是各个元素与数之间的运算

>>> x+3
array([[5, 4],
       [7, 6]])
>>> x*2
array([[4, 2],
       [8, 6]])

2、数组与数组之间

注:数组的形状必须相同

  • 对应元素之间的运算(+-*/)
>>> x+y
array([[3, 3],
       [5, 3]])
  • 矩阵乘法
>>> np.dot(x,y)
array([[3, 4],
       [7, 8]])
  • 矩阵求逆
>>> np.linalg.inv(x)
array([[ 1.5, -0.5],
       [-2. ,  1. ]])

  • 35
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 36
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷烬亿下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值