【史上最详细教程】数据分析三剑客之numpy

目录

一、numpy模块介绍

二、环境搭建

三、numpy创建数组

3.1 创建一维数组

3.2 创建二维数组

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

3.4 其它快速创建数组的方式

四、numpy爆破属性

五、numpy索引与切片

5.1 索引

5.2 切片

六、统计&聚合&矩阵操作

6.1 变形

6.2 级联

6.3 聚合

6.4 统计

6.5 矩阵


一、numpy模块介绍

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

二、环境搭建

pip install numpy

三、numpy创建数组

3.1 创建一维数组

import numpy as np

arr = np.array([1, 2, 3])
print(arr) # [1 2 3]

3.2 创建二维数组

import numpy as np

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

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

 - 数组中存储的数据元素类型必须是统一类型
 - 优先级:
        - 字符串 > 浮点型 > 整数

3.4 其它快速创建数组的方式

  • zero()
  • ones()
  • linespace()
  • arange()
  • random系列
import numpy as np

# 创建三行四列的numpy数组,默认1.0填充
arr = np.ones(shape=(3, 4))
print(arr)

import numpy as np

# 创建一维的等差数列数组
arr = np.linspace(0, 100, num=20)
print(arr)

import numpy as np

# 创建一维的等差数列数组
arr = np.arange(10, 50, step=2)
print(arr)

四、numpy爆破属性

import numpy as np

# 创建五行六列0-100的二维数组
arr = np.random.randint(0, 100, size=(5, 6))

# 返回数组的形状 【五行六列】
print(arr.shape) # (5, 6)
# 返回数组的维度
print(arr.ndim) # 2
# 返回数组元素的个数
print(arr.size) # 30
# 返回数组元素的类型
print(arr.dtype) # int32

五、numpy索引与切片

5.1 索引

索引操作和列表同理。

import numpy as np

# 创建五行六列0-100的二维数组
arr = np.random.randint(0, 100, size=(5, 6))
print(arr)
# 取出下标为1的行数据
print(arr[1])
# 取出多行
print(arr[[1, 3, 4]])

5.2 切片

  • 切片操作
    • 切出前两列数据
    • 切出前两行数据
    • 切出前两行的前两列数据
    • 数组数据反转
    • 练习:将一张图片上下左右进行翻转操作
    • 练习:将图片进行指定区域的裁剪
import numpy as np

# 创建五行六列0-100的二维数组
arr = np.random.randint(0, 100, size=(5, 6))

# 切出前两行数据
print(arr[0:2])

# 切出前两列数据
print(arr[:, 0:2])

# 切出前两行的前两列数据
print(arr[0:2, 0:2])

# 数组数据反转
print(arr[::-1])
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt


# 读取图片返回的数组,数组中装载的就是我们图片内容
img_arr = plt.imread('./1.jpg')
print(img_arr) # 一个三维数组
plt.imshow(img_arr[:, ::-1, :])
plt.show()  # 显示图像窗口

六、统计&聚合&矩阵操作

6.1 变形

import numpy as np

# 创建五行六列0-100的二维数组
arr = np.random.randint(0, 100, size=(5, 6))

# 将二维数组变成一维
# 因为arr是5行6列共30个元素,所以参数30代表30个坑位
arr_1 = arr.reshape((30,))
print(arr_1)

# 将一维数组变为多维 两行15列
arr = arr_1.reshape((2, 15))
print(arr)

6.2 级联

级联操作:将多个numpy数组进行横向或者纵向的拼接。

axis轴向

  • 0:列
  • 1:行
import numpy as np

# 创建五行六列0-100的二维数组
arr = np.random.randint(0, 100, size=(5, 6))

# 将arr与arr数组进行级联拼接
arr_1 = np.concatenate((arr, arr), axis=0)
print(arr_1)

6.3 聚合

常见的聚合操作:

  • sum
  • max
  • min
  • mean
import numpy as np

# 创建五行六列0-100的二维数组
arr = np.random.randint(0, 100, size=(5, 6))

# 计算出每一列的和
arr_sum = arr.sum(axis=0)
print(arr_sum) # [295 160 317 232 186 245]

6.4 统计

  • 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)。换句话说,标准差是方差的平方根。

6.5 矩阵

  • numpy中包含了一个矩阵库numpy.matlib,该模块中的函数返回的是一个矩阵,而不是ndarray对象。一个矩阵是一个由行(row)列(column)元素排列成的矩形阵列。
  • numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1,除此以外全都为0。
import numpy as np

# eye返回一个标准的单位矩阵
print(np.eye(6))

转至矩阵

  • .T

矩阵相乘

  • numpy.dot(a,b,out=None)
    • a:ndarray数组
    • b:ndarray数组

  • 第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将乘积相加( 2 x 1 + 1 x 1),得到结果矩阵左上角的那个值3。也就是说,结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。
  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神农尝百码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值