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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> numpy初学者笔记 -> 正文阅读

[人工智能]numpy初学者笔记



numpy

帮助处理数值型数据,是python科学计算库的基础库 import numpy as np

numpy 创建数组(矩阵)

<class 'numpy.ndarray'>

  • 以下三种情况相同
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array(range(1,6))
arr3 = np.arange(1, 6)
# [1 2 3 4 5] 注意arange和array区别
  • 数据的类型:
arr4 = np.array(range(1,4), dtype="float")
print(arr4.dtype) # float64
print(arr4.astype("int8").dtype()) # int8

#   i1--->int8
#   float--->float64 
#   略

print(np.round(random.random(), 2)) # 保留两位小数

数组的形状

t1 = np.arange(12)
print(t1.shape) # (12,)
t2 = np.array([[1,2,3],[4,5,6]])
print(t2.shape) # (2, 3)
print(t2.reshape(t2.shape[0]*t2.shape[1],)) # 未知总长度,知道维度,变一维
print(t2.flatten()) # 变一维
t3 = np.arange(24).reshape((2,3,4)) # 改变数组形状,2*3*4
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

numpy的一个广播机制: 数组+数字 是 给数组中每个位置都加这个数
0/0=nan 数字/0=inf(无穷 )
数组相减:按照减数的维度在被减数上减小
广播会在缺失和长度为1的维度上进行


numpy读取本地数据和索引

在numpy中可以理解为方向使用0,1,2…数字表示,对于三维数组(shape(2,2,3)),有0,1,2轴

计算一个二维数组的平均值,必须指定是哪个方向上的数字平均值

读取数据

  • CSV:Comma-Separated Value 逗号分隔值文件

np.loadtxt(frame,dtype="int",delimiter=None,skiprows=0,usecols=None,unpack=False)

  1. frame:文件、字符串或产生器,可以是.gz或.bz2压缩文件
  2. dtype:数据类型,可选,CSV的字符串以什么数据类型读入数组中,默认np.float
  3. delimiter:分割字符串,默认是任何空格,改为逗号
  4. skiprows:跳过前X行,一般跳过第一行表头
  5. usecols:读取指定的列,索引,元组类型
  6. unpack:如果True,转置,如果False,不变,默认False

numpy的四种转置方式

转置是一种变化,为了更方便的处理数据

方法1:读入的时候转置
t1 = np.loadtxt(file_path,delimiter=",",dtype="int",unpack=True)
方法2:
arr1.transpose()
方法3:
arr1.swapaxes(1,0)
方法4:
arr1.T

numpy的索引和切片

a = array([[ 0,  1,  2,  3],
           [ 4,  5,  6,  7],
           [ 8,  9, 10, 11]])
# 取一行
a[1] = array([4, 5, 6, 7])
# 取多行
a[1:3] = array([[ 4,  5,  6,  7],
                [ 8,  9, 10, 11]])
# 取一列
a[:,2] = array([ 2,  6, 10])
# 取多列
a[:,2:4] = array([[ 2,  3],
                  [ 6,  7],
                  [10, 11]])
# 加上步长
a[[0,2],:] = 取第0和第2行
a[:,[0,3]] = 取第0和第3# 取第3行到第5行,第2列到第4列的结果
a[2:5,1:4]
# 取多个不相邻的点 arr[0][1],arr[2][2]
a[[0,2],[1,2]]

## 数值类型是numpy.int64或32



numpy中数值的修改

# 普通修改
a[:,2:4] = 0

# 条件修改
## 把a中小于10的改成3
a[a<10] = 3
## 三元运算符
a.where(t<10, 0, 10)
## clip
a.clip(10,18) # 小于10的替换为10,大于18的替换为18

####   nan不会被替换,nan是float型的值,要把某个值设为non,需要先转换为float型,再=non    ####




数组的拼接

temp = np.vstack((t1,t2)) # 竖直拼接(vertically)
temp = np.hstack((t1,t2)) # 水平拼接(horizontally)

数组的行列交换

t = array([[12, 13, 14, 15],
           [16, 17, 18, 19],
           [20, 21, 22, 23]])
t[[1,2],:] = t[[2,1],:] # 行交换

array([[12, 13, 14, 15],
       [20, 21, 22, 23],
       [16, 17, 18, 19]])

t[:,[0,2]] = t[:,[2,0]] # 列交换

array([[14, 13, 12, 15],
       [22, 21, 20, 23],
       [18, 17, 16, 19]])

构造一个全为0的数组,且int类型: np.zeros((t.shape[0],1)).astype(int)
构造一个全为1的数组,且int类型: np.ones((t.shape[0],1)).astype(int)
创建一个对角线为1的正方形数组(方阵)np.eye(3)
np.count_nonzero(t2)返回数组中不为0的个数

获得每行最大值最小值的位置

np.argmax(t,axis=0)
np.argmin(t.axis=1)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFSTDODc-1636986201459)(imgs/numpy生成随机数.png)]

  • 正态分布:中间高,两头低
  • 均匀分布:在相同的大小范围内出现概率是等可能的

numpy的注意点

  1. a=b 完全不复制,a和b相互影响
  2. a = b[:],视图的操作,一种切片,会创建新的对象a,但是a的数据完全由b保管,互相影响
  3. a = b.copy(),复制,互不影响

numpy中的nan和inf

nan(NAN,Nan):not a number表示不是一个数字

什么时候出现nan:

  1. 当读取文件为float时候,如果有缺失,就会出现nan
  2. 当做了一个不合适的计算(eg:无穷大(inf)减去无穷大)

inf(-inf,inf):infinity,inf表示正无穷,-inf表示负无穷

什么时候出现inf(-inf,+inf):

  1. 比如一个数字除以0,(python中会直接报错,numpy中是一个inf或-inf)

numpy中nan的注意点

  1. 两个nan是不相等的 np.nan!=np.nanTrue
  2. np.count_nonzero(t)返回数组中不为0的个数,np.count_nonzero(t!=t)返回数组中nan的个数。
  3. np.isnan(t)数组的值是不是nan,t[np.isnan(t)] = 0把nan全部替换0。
  4. nan和任何值计算都为nan

在一组数据中,单纯把nan替换为0,有影响!!!
替换后,会对平均值大小产生影响,所以应该把缺失的数值替换为均值(中值)或者直接删除有缺失的一行




numpy中常用统计函数

求和:t.sum(axis=None)
均值:t.mean(a.axis=None)受离群点的影响较大
中值:np.median(t,axis=None)
最大值:t.max(axis=None)
最小值:t.min(axis=None)
极值:np.ptp(t,axis=None)即最大值和最小值只差
标准差:t.std(sxis=None)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YYHE7IW7-1636986201461)(imgs/统计函数.png)]

默认返回多维数组的全部的统计结果,如果指定axis,则返回一个当前轴上的结果

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 18:49:57  更:2021-11-16 18:50:31 
 
开发: 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/27 6:23:27-

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