jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)...

一、开发环境介绍
anaconda

    • 官网:https://www.anaconda.com/
    • 集成环境:集成好了数据分析和机器学习中所需要的全部环境
      • 注意:
        • 安装目录不可以有中文和特殊符号
  • jupyter
    • jupyter就是anaconda提供的一个基于浏览器的可视化开发工具
  • jupyter的基本使用
    • 启动:在终端中录入:jupyter notebook的指令,按下回车
    • 新建:
      • python3:anaconda中的一个源文件
      • cell有两种模式:
        • code:编写代码
        • markdown:编写笔记

jupyter快捷键:

      • 添加cell:a或者b
      • 删除:x
      • 修改cell的模式:
        • m:修改成markdown模式
        • y:修改成code模式
      • 执行cell:
        • shift+enter
      • tab:自动补全
      • 代开帮助文档:shift+tab


二、数据分析三剑客

  • numpy
  • pandas(重点)
  • matplotlib


1.numpy模块

  • NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库。重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组上执行的数值运算。
import numpy as np

2.numpy数组的创建

  • 使用np.array()创建
  • 使用plt创建
  • 使用np的routines函数创建

(1)使用array()创建一个一维数组

arr = np.array([1,2,3,4,5])
arr

6645d0c4fec3906b274b2aefd856a602.png

(2)使用array()创建一个多维数组

import numpy as np
b=np.array([[1,2,3],[4,5,6]])
b

2e24230268eede582442b3f31d9fd3e4.png

数组和列表的区别是什么?

  • 数组中存储的数据元素类型必须是统一类型,列表可以存储不同类型的元素
  • 优先级:
    • 字符串 > 浮点型 > 整数
np.array([[1,2,3],[4,5.5,6]])

25aad0d79e0c7d16ed71a58e0b90f375.png

(3)plt:将外部的一张图片读取加载到numpy数组中,然后尝试改变数组元素的数值查看对原始图片的影响

import matplotlib.pyplot as plt
img_arr = plt.imread('./1.jpg')#将图片数据进行读取,返回的是一个三维的数组
img_arr

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第1张图片
#将数组中的数据进行图像展示
plt.imshow(img_arr)

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第2张图片
plt.imshow(img_arr-100)#将数组中的每一个数组元素都减去100

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第3张图片

(4)其他创建数组的方式

  • zero()
  • ones()
  • linespace()
  • arange()
  • random系列
np.ones(shape=(4,5))#只能创建元素为1的矩阵,可以是多维或者一维

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第4张图片
np.linspace(0,100,num=20)#只能创建一维矩阵

ac0e0359274cad4eb336dda7db5ea3d1.png
np.arange(0,100,step=3)#只能创建一维的数组

d886a90313dfd460524ce3aece5d721e.png
np.random.randint(0,100,size=(3,4))#可以创建一维、二维或者多维矩阵

5a1eaf84c90121a12a86a3a32ce0d37b.png
#固定随机性
np.random.seed(23)
np.random.randint(0,100,size=(3,4))

bfd80b1aa83f84c6e318c895be842590.png

3.numpy属性

  • shape
  • ndim
  • size
  • dtype
img_arr.shape #形状
img_arr.ndim#维度
img_arr.size#返回元素个数
img_arr.dtype#数组元素类型
type(img_arr)

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第5张图片

4.numpy的数据类型

  • array(dtype=?):可以设定数据类型
  • arr.dtype = '?':可以修改数据类型

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第6张图片
#如何修改数组元素的数据类型
arr = np.array([1,2,3])
arr.dtype

55aaf0c83b3ad747b20553fafa596ab9.png
arr.dtype = 'int8'
arr.dtype

947c91cb3a22fa77374e305444f54361.png

5.Numpy的索引和切片操作(重点)

(1)索引操作和列表同理

#一维数组的索引
import numpy as np
b = np.arange(0, 8, 2)
print(b)
print(b[2])  # 输出第三个数

17bc791a6a0933dc1a59ad2e28f84ba8.png
#二维数组的索引
a = np.array([[5, 2, 4, 6], [3, 4, 7, 5], [2, 2, 9, 5]])
print(a[1])  # 输出第二行
print(a[1][1])  # 输出第二行第二列的元素
print(a[1, 1])  # 同上
print(a[1, 0:2])  # 输出第二行第0-1位置即第1-2个元素

941ec7578ac1a9e8e90a83c0f9f7e1c3.png

(2)切片操作

    • 切出前两列数据
    • 切出前两行数据
    • 切出前两行的前两列的数据
    • 数组数据翻转
    • 练习:将一张图片上下左右进行翻转操作
    • 练习:将图片进行指定区域的裁剪
np.random.seed(23)#固定随机数组的数值
arr = np.random.randint(0,100,size=(5,7))
arr

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第7张图片
#切出数组的前两行
arr[0:2]

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第8张图片
切出前两行
#切出数组的前两列
arr[:,0:2] #arr[行,列]

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第9张图片
#前两行的前两列
arr[0:2,0:2]
#翻转所有列
arr[:,::-1]

fb59541c671fc04328f16a73e18cabc7.png
#数组翻转所有行
arr[::-1,:]

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第10张图片
#翻转所有行和列
arr[::-1,::-1]

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第11张图片

练习1:把图片进行上下左右翻转

#将图片进行左右翻转
plt.imshow(img_arr[:,::-1,:])

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第12张图片
#图片上下翻转
plt.imshow(img_arr[::-1,:,:])

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第13张图片

练习2:从图中截取人物作为头像

#从图中截取人物作为头像,先确定行和列截取的范围
import matplotlib.pyplot as plt
head_arr = plt.imread('./head.jpg')
plt.imshow(head_arr)

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第14张图片
plt.imshow(head_arr[30:500,70:420,:])

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第15张图片

6.数组变形reshape

#二维数组变成一维数组,先建立一个二维数组
np.random.seed(12)
arr = np.random.randint(0,100,size=(3,4))
arr

9f4c7af601810520025833bc6967e15d.png
#将二维数组变形成一维数组
arr_1 = arr.reshape((12,))
arr_1

2ff8dbc037160a483ab0de8a3fb50916.png
arr_2=arr_1.reshape((2,6))

baa0d32ec7e1ccd21d9eb02d3eab3f3e.png

7.级联操作

- 将多个numpy数组进行横向或者纵向的拼接
  • axis轴向的理解
    • 0:列
    • 1:行
np.concatenate((arr,arr),axis=0)#axis=0代表竖向(列)拼接,
=1是横向拼接(行)

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第16张图片
np.concatenate((arr,arr),axis=1)

8d2d2eac01c44f6cc9aa7ec7ba62328e.png
  • 问题:
  • 级联的两个数组维度一样,但是行列个数不一样会如何?

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第17张图片

练习:实现图片的9宫格摆放

#拼接图片实现九宫格
pic=plt.imread('./head.jpg')
result=np.concatenate((pic,pic,pic),axis=0)
result2=np.concatenate((result,result,result),axis=1)
plt.imshow(result2)

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第18张图片

8.常用的聚合操作

  • sum,max,min,mean
import numpy as np
arr=np.array([[2,4,23],[63,48,12]])
print(arr)
print(arr.sum(axis=1))#axis=1表示对行求和
print(arr.sum(axis=0))#axis=0表示对列求和

arr.max(axis=0)#找到列的最大值
#其他函数同理

jupyter notebook多维数组运算_Part24:Python数据分析三剑客-Numpy(创建数组、切片、级联、统计函数)..._第19张图片

9.常用的数学函数

  • NumPy 提供了标准的三角函数:sin()、cos()、tan()
  • numpy.around(a,decimals) 函数返回指定数字的四舍五入值。
    • 参数说明:
      • a: 数组
      • decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
np.sin(arr)

21bc8e8912f7374d3acf48b976dba99a.png
np.around(arr,decimals=-2)

97a5ec18a70b1ce2818ab9b3ed7ca8a3.png

10.常用的统计函数

  • numpy.amin() 和 numpy.amax(),用于计算数组中的元素沿指定轴的最小、最大值。
  • numpy.ptp():计算数组中元素最大值与最小值的差(最大值 - 最小值)。
  • numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
  • 标准差std():标准差是一组数据平均值分散程度的一种度量。
    • 公式:std = sqrt(mean((x - x.mean())**2))
    • 如果数组是 [1,2,3,4],则其平均值为 2.5。 因此,差的平方是 [2.25,0.25,0.25,2.25],并且其平均值的平方根除以 4,即 sqrt(5/4) ,结果为 1.1180339887498949。
  • 方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。
#标准差的计算
a = np.array([22,33,22,34,41,44])
a.std()

41e56a8769e7057c0422f6b7e27cf689.png
#方差的计算
a.var()

0b17b1c2282c7916a05d2968b62edcd5.png

你可能感兴趣的:(jupyter,notebook多维数组运算,numpy二维数组改变某些数,numpy找到最大值坐标,python,jpg转数组,python,numpy,子数组,python,numpy,数组,按行倒序)