IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 认识NumPy -> 正文阅读

[Python知识库]认识NumPy

认识NumPy

创建一维数组

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 添加字体
plt.rcParams['axes.unicode_minus'] = False # 默认是使用Unicode负号,设置正常显示字符,如正常显示负号
%config InlineBackend.figure_format = 'svg'
# 方法一:通过array函数将Python中的list转成ndadrray对象
array1 = np.array([1, 2, 3, 4, 5], dtype='u2')
array1
type(array1)
array([1, 2, 3, 4, 5])
# 数组元素的个数
array1.size
# 数组的维度(dimension)
array1.ndim
# 数组的形状
array1.shape
 数组每个元素占用的内存空间(字节)
array1.itemsize
# 数组总共占用的内存空间(字节)
array1.nbytes
# 数组元素的数据类型
array1.dtype
guido = plt.imread('resources/guido.jpg')
plt.imshow(guido)
type(guido)
guido.shape
array2 = np.array(['apple', 'pitaya', 'waxberry', 'litchi'])
array2
array2.dtype
# 方法二:通过arange函数指定数据范围创建一维数组
array3 = np.arange(10)
array3
array4 = np.arange(1, 20, 3)
array4
array5 = np.arange(1, 20, 0.5)
array5
# 方法三:通过linspace函数指定范围以及抽取的数据量来创建一维数组
array6 = np.linspace(-5, 5, 51)
array6
x = np.linspace(-2 * np.pi, 2 * np.pi, 120)
y = np.round(np.sin(x), 4)
plt.plot(x, y, color='blue', marker='x')
plt.show()
 方法四:通过随机函数创建一维数组
array7 = np.random.randint(1, 100, 5)
array7
# 0~1范围的随机数
array8 = np.random.random(10)
array8
# 正态分布的随机数
heights = np.random.normal(169.7, 6.5, 500)
heights = np.round(heights, 1)
# 直方图
plt.hist(heights, bins=10)
plt.show()
array9 = np.arange(1, 10)
array9
# 数组的下标(索引)运算
print(array9[8])
print(array9[-1])
# 花式索引(fancy index)
array9[[0, 0, 1, 0, 1, -1, -2, -2, -2]]
# 布尔索引
array9[array9 > 5]
array9[array9 % 2 == 0]
array9[(array9 > 5) & (array9 % 2 == 0)]
array9[(array9 > 5) | (array9 % 2 == 0)]
array9[(array9 > 5) | ~(array9 % 2 == 0)]
# 切片
array9[::-1]

创建二维数组

# 方法一:通过array函数将嵌套列表转成二维数组
array10 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array10
array10.shape
array10.ndim
# 方法二:将一维数组调形调整为二维数组
array11 = array9.reshape((3, 3))
array11
array10 == array11
array11 > 5
array11[array11 > 5]
# 方法三:用随机的方式创建二维数组
np.random.randint(60, 101, (5, 3))
# 方法四
np.zeros((5, 5), dtype=np.int32)
np.ones((4, 3))
np.full((3, 5), 100)
np.eye(10)
# 索引运算
array11[1][1] = 100
array11[1][1]
# 二维数组的索引运算
array11[1,1] = 5
array11[1,1]
# 二维数组的切片
array11[:2,:2]
guido = plt.imread('resources/guido.jpg')
plt.imshow(guido)
# 通过切片操作抠出Guido的脑袋
head = guido[30:350, 85:310]
plt.imshow(head)
# 垂直翻转
plt.imshow(guido[::-1])
# 水平翻转
plt.imshow(guido[:, ::-1])
plt.imshow(guido[:, :, ::-1])

数组对象的方法

获取描述性统计信息

集中趋势:均值、中位数、众数

离散趋势:最大值、最小值、极差、四分位距离、方差、标准差

下四分位数(25%分位数),通常记为Q1

中位数(50%分位数),通常记为Q2

上四分位数(75%分位数),通常记为Q3

四分位距离:$ IQR = Q3 - Q1

异常值:$ data < Q1 - 1.5 \times IQR

异常值:$ data > Q3 + 1.5 \times IQR

array12 = np.random.randint(10, 100, 8)
array12
# 均值
array12.mean()
# 排序
np.sort(array12)
# 中位数
np.median(array12)
array13 = np.array([1, 1, 3, 5, 5, 5, 5, 5, 6, 6, 7, 8])
array13
print('Mean:', array13.mean())
print('Median:', np.median(array13))
temp_list = array13.tolist()
temp_list.append(100)
array14 = np.array(temp_list)
array14
# 均值对异常值敏感,中位数对异常值不敏感
print('Mean:', array14.mean())
print('Median:', np.median(array14))
# 最大值、最小值和极差
print('Min:', array14.min())
print('Max:', array14.max())
print('Ptp:', np.ptp(array14))
# 方差和标准差
print('Variance:', array14.var())
print('Standard deviation:', array14.std())
# 分位数
print('Q1:', np.quantile(array14, 0.25))
print('Q2:', np.quantile(array14, 0.5))
print('Q3:', np.quantile(array14, 0.75))
# 四分位距离
print('IQR:', np.quantile(array14, 0.75) - np.quantile(array14, 0.25))
array12
# 最大值和最小值的索引
array12.argmax(), array12.argmin()
# 累积和
array12.cumsum()
array15 = np.array([True, False, True, True])
array15.all()
array15.any()
# 扁平化
array16 = np.random.randint(60, 101, (5, 3))
array16.flatten()
# 持久化一个数组
array16.dump('array16.dat')
# 从文件中加载数组
array17 = np.load('array16.dat', allow_pickle=True)
array17
array16 is array17
 返回排序后的数组
np.sort(array12)
# 就地排序(在原数组上直接排序)
array12.sort()
array12
# 交换指定的轴
array17.swapaxes(0, 1)
# 转置
array17.transpose()
# 转置
array17.T
array18 = np.arange(1, 10)
array19 = np.array([1, 1, 1, 2, 2, 2, 3, 3, 3])
array18 ** array19
array20 = np.array([100])
array20
# 适用广播机制
array18 + array20
#### 广播机制
使用广播机制的前提条件:
1. 两个数组的后缘维度相同。
2. 两个数组的后缘维度不同,但其中一方为1。
后缘维度:数组的shape属性,从后往前看的部分。
matrix1 = np.array([[1, 0, 2], [-1, 3, 1]])
matrix2 = np.array([[3, 1], [2, 1], [1, 0]])
# 矩阵乘法
matrix1 @ matrix2
# 矩阵乘法
np.matmul(matrix1, matrix2)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:12:29  更:2021-09-29 10:15:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:24:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码