当前位置:网站首页>Numpy数值计算基础
Numpy数值计算基础
2022-06-12 12:21:00 【大太阳花花公主】
目录
5.2,rand函数:生成服从均匀分布的[0,1)内的随机数
4,savetxt()函数将数组写到某种分隔符隔开的文本文件中。
一,Numpy的概念
Numpy是用于数据科学计算的基础模块,不但能够完成科学计算的任务,而且能够被用作高效的多维数据容器,可用于存储和处理大型矩阵,Numpy的数据容器能够保存任意类型的数据,这使得Numpy可以快速地整合各种数据。
二,数组
1,数组的属性
| 属性 | 说明 |
|---|---|
| ndim | 返回int,表示数组的维数 |
| shape | 返回tuple。表示数组的尺寸,对于n行m列的矩阵,形状为(n,m) |
| size | 返回int,表示数组元素总数,等于数组形状的乘积 |
| dtype | 返回data-type,描述数组中元素的类型 |
| itemsize | 返回int,表示数组的每个元素的大小(以字节为单位) |
2,数组的创建
2.1 array函数
用于创建一维或多维数组。np.array(object,dtype,ndim)
| 参数名称 | 说明 |
|---|---|
| object | 用于接收数组,表示想要创建的数组,无默认 |
| dtype | 接收data-type,表示数组所需的数据类型,默认为None |
| ndim | 接收int。指定生成数组应该具有的最小维数,默认为None |
# np.array生成一维数组
arr1=np.array([1,2,3,4])# np.array生成二维数组
arr2=np.array([[1,2,3,4],[4,5,6,7]])2.2 arrange函数
类似于Python自带的函数range,通过指定开始值、终值和步长来创建一维等差数组。创建的数组不含终值。步长默认为1.
# np.arrange创建数组
arr=np.arange(1,10)2.3 linspace函数
通过指定开始值、终值和元素个数来创建一维等差数组。创建的数组包含终值。
# 通过np.linspace创建开始值为1,终值为10,个数为5的一维等差数组。
arr=np.linspace(1,10,5)2.4 logspace函数
与linspace函数类似,但它创建的是等比数列
# 通过np.logspace创建开始值为1,终值为10,个数为5的一维等比数组。
arr=np.logspace(1,10,5)2.5 zeros函数
创建指定长度或形状的的全零数组
# 创建长度为2的一维全零数组
arr=np.zeros(2)# 创建三行四列的全零数组
arr=np.zeros((3,4))2.6 ones函数
创建指定长度或形状的的全一数组
# 创建长度为2的一维全1数组
arr=np.ones(2)# 创建三行四列的全1数组
arr=np.ones((3,4))2.7 eye函数
用于创建生成主对角线上的元素为1,其他元素为0的数组。类似单位矩阵
# 创建四行四列的主对角线上的元素为1,其他元素为0的数组
arr=np.eye(4)2.8 diag函数
创建对角矩阵,即除对角线外的其他元素都为0.
# 创建对角元素分别为1和3,其他元素为0的对角矩阵。
arr=np.diag([1,3])3,数组数据类型的转换
3.1,np.数据类型(数据对象)
创建数组并查看其数据类型
arr3=np.arange(1,10)
arr3.dtype通过 np.数据类型(数据对象)的方式改变其数据类型。
arr3=np.int64(arr3)代码运行截图如下:
3.2,数据对象.astype(np.数据类型)
arr3.astype(np.int32)代码运行截图如下:
4,数组的处理
4.1,数组的索引和切片
4.1.1 一维数组索引:数组名[m:n],其中m,n为数组元素下标
arr=np.arange(1,10)
arr[0:2]运行结果如下 :
4.1.2 一维数组切片:数组名[start,end,step],(半开区间)
arr[0:3:1]运行结果如下 :
4.1.3 二维数组切片:数组名[行索引,列索引],半开区间
创建二维数组,截取行索引等于0后面的所有的行和第一列后面所有的列组成的数组。
arr=np.array([[1,2,3,4],[4,5,6,7]])
arr[0:,1:]运行结果如下:

4.1.4 整数索引:从两个序列的对应位置取出两个整数来组成行下标和列下标。
4.1.5 布尔值索引:当结果对象是布尔运算(例如比较运算符)的结果时,使用布尔值索引
4.2,修改数组形状
4.2.1,数组名.reshape=(行,列)。不改变原数组形状
#创建一个数组
arr=np.arange(12)arr.reshape(3,4)4.2.2,数组名.resize=(行,列)。不改变原数组形状,返回指定大小的新数组。
arr.resize(4,3)4.2.3 设置维度f修改数组的形状方法:
arr.shape=(3,4)结果如下所示:

4.3,数组的展平与连接
4.3.1 ravel()函数:可以将多维数组展平变为一维数组,原arr不变。按行展平
#ravel()函数用于按行展平
arr3=arr1.ravel()运行结果如下:
4.3.2 flatten()函数:可以将多维数组展平变为一维数组,并且可以选择按行或者按列展平
#flatten()函数默认按行展平
arr3=arr1.flatten()
#"F"表示按列展平
arr3=arr1.flatten("F")运行结果如下:

4.3.3 hstack()函数,左右拼接
np.hstack((arr1,arr2))运行结果如

4.3.4 vstack()函数:上下拼接
np.vstack((arr1,arr2))运行结果如下:

4.3.5 concatenate()函数:用于沿指定轴连接相同形状的两个或多个数组。
#axis = 1左右拼接
np.concatenate((arr1,arr2),axis = 1)
#axis = 0上下拼接
np.concatenate((arr1,arr2),axis = 0)运行结果如下:

4.3.6 spilt()函数:沿特定的轴将数组分割为子数组
#axis = 1 分割列
np.split(arr1,3,axis=0)
#axis = 0 分割行
np.split(arr1,3,axis=1)运行结果如下:

4.3.7 transpose()函数:实现数组的转置,原arr不变
#方法一
np.transpose(arr1)
#方法二
arr1.T运行结果如下:

4.4,数组元素的处理
4.4.1 append()函数:是在数组末尾添加函数
#按行添加
np.append(arr,[[0, 0, 0]],axis=0)
#按列添加
np.append(arr,[[0],[0], [0]],axis=1)运行结果如下:

4.4.2 insert()函数:在给定索引前,沿给定轴在输入数组中插入元素
#按行
np.insert(arr,3,[[0,0,0],[1,1,1],[2,2,2]],axis=0)
#按列
np.insert(arr,3,[[0,0,0],[1,1,1],[2,2,2]],axis=1)结果如下:

4.4.3 delete()函数:返回从输入数组中删除指定子数组的新数组
#删除第二行
np.delete(arr,1,axis=0)
#用切片表示元素范围
np.delete(arr,np.s_[1,1,1])运行结果如下:

4.5,数组的运算
相同形状的数组按元素级进行逐个元素运算,而不同形状的数组,则按广播机制进行计算
5,随机数模块
5.1,random函数:生成[0,1)内的随机数

5.2,rand函数:生成服从均匀分布的[0,1)内的随机数
5.3,randn函数:生成服从正态分布的随机数
5.4,randint函数:生成给定上下限范围的随机数

5.5,choice函数:从一个列表或者数组中随机进行采样

5.6,random模块的常用随机数生成函数
| 函数名 | 用途 |
| seed | 确定随机种子 |
| permutation | 返回一个序列的随机排序 |
| shuffle | 对一个序列进行随机排序(改变原序列) |
三,矩阵
1,创建矩阵

2,矩阵的矢量积
运算符采用*,且*左边矩阵的列数要与其右边的行数相等,运算结果是矩阵中对应元素相乘的累加和

3,矩阵的数量积
也称为矩阵的点乘操作,即各元素相乘

四,读写文件
1,save函数是以二进制的格式保存一个数组数据
在桌面新建一个名为save的文件夹。
#np.save("路径\\结果文件名",arr名)
np.save("C:\\Users\\Yan\\Desktop\\save\\save_arr1",arr)结果如下:

2,savez函数可以将多个数组保存到一个文件
np.savez("C:\\Users\\Yan\\Desktop\\save\\save_arr2",arr1,arr2)结果如下:

3,load函数是从二进制的文件中读取数据
存储时可以省略扩展名,但读取时不能省略。
np.load("C:\\Users\\Yan\\Desktop\\save\\save_arr1.npy")结果如下:

4,savetxt()函数将数组写到某种分隔符隔开的文本文件中。
np.savetxt("C:\\Users\\Yan\\Desktop\\save\\save_arr3.txt",arr,fmt="%d",delimiter="。。")
5,loadtxt()函数把文件加载到一个二维数组中。
np.loadtxt("C:\\Users\\Yan\\Desktop\\save\\save_arr3.txt",delimiter="。。")
#delimiter中是txt存储时的分割方式结果如下:

五,numpy中的统计分析
1,sort()直接排序

2,间接排序
argsort():返回沿轴按升序排序的值的下标
np.argsort(arr1)lexsort():用于对多个序列进行排序。返回排序的值的下标
np.lexsort((arr,arr1))3,重复和去重
去重:
unique函数可以找出数组中的唯一值,并返回按升序排序的结果

重复:
tile() 重复整个数组
np.tile(arr,2)
# 2表示重复次数
repeat():重复元素,可指定按行重复或者按列重复

边栏推荐
- You can't just use console Log ()?
- BAT面试&高级进阶,文末领取面试资料
- Beyondcompare 4 uses PJ
- ACE配置IPv6, VS静态编译ACE库
- 银行布局元宇宙:数字藏品、数字员工成主赛道!
- Macro compilation preprocessing header Win32_ LEAN_ AND_ MEAN
- 【Leetcode】637. Layer average of binary tree
- Linear model of machine learning
- Getting started with NVIDIA Jetson nano Developer Kit
- LeetCode 1037. Effective boomerang (vector cross product)
猜你喜欢

导航中,添加边框影响布局的解决方法

Batch load/store instructions of arm instruction set

JS attribute operation and node operation

Find the median of two ordered arrays (leetcode 4)

【Leetcode】79. Word search

promise的理解已经利用promise实现图片的预加载(顺序加载)

NDT registration principle

无重复字符的最长字符串(LeetCode 3)

寻找两个有序数组的中位数(LeetCode 4)

Rust language learning
随机推荐
QT adds a summary of the problems encountered in the QObject class (you want to use signals and slots) and solves them in person. Error: undefined reference to `vtable for xxxxx (your class name)‘
Shielding does not display vs warning
for in 与Object.keys()的区别
Win7 registers out of process components, services, and COM component debugging
Longest string without duplicate characters (leetcode 3)
点击产生4位随机数,验证码设置
Ace configures IPv6, vs statically compiles ace Library
LeetCode_字符串_简单_344.反转字符串
無重複字符的最長字符串(LeetCode 3)
DOM+JS+轮播图+无时间
Traditional DOM rendering?
Vim,Gcc,Gdb
Quic wire layout specification - packet types and formats | quic protocol standard Chinese translation (2) package type and format
What can LDAP and SSO integration achieve?
[transfer]placement NEW
Principle of master-slave replication of redis
Start with Xiaobai, take the weight parameter from the trained model and draw the histogram
VGG小卷积代替大卷积 VS 深度可分离卷积
JS将DOM导出为图片的方法
LeetCode_二分搜索_中等_162. 寻找峰值