Python基础numpy实验报告总结 numpy实验心得

您所在的位置:网站首页 numpy实验报告 Python基础numpy实验报告总结 numpy实验心得

Python基础numpy实验报告总结 numpy实验心得

2023-11-18 21:56| 来源: 网络整理| 查看: 265

目录

Numpy一、简介1、安装2、特殊的导包二、ndarray-多维数组对象1、创建ndarray数组1.1 array1.2 arange1.3 linspace1.4 zeros1.5 ones1.6 empty1.7 eye2、ndarray对象的特点3、ndarray的常用属性4、ndarray的数据类型5、索引和切片5.1 一维数组5.1.1 索引5.1.2 切片5.2 二维数组5.2.1 索引5.2.2 切片5.3 布尔型索引5.4 花式索引三、通用函数1、常用通用函数1.1 一元函数1.2 二元函数2、数学统计方法3、随机数Numpy一、简介

Numpy是高性能科学计算和数据分析的基础包。它也是pandas等其他数据分析的工具的基础,基本所有数据分析的包都用过它。

NumPy为Python带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。

它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语言的运算中,明显地提高了程序的运算速度。

1、安装pip install numpy2、特殊的导包

数据分析界约定俗成的将numpy包导入命名为np

import numpy as np二、ndarray-多维数组对象

Numpy的核心特征就是N-维数组对 —— ndarray。

1、创建ndarray数组

方法

描述

array()

将列表转换为数组,可选择显式指定dtype

arange()

range的numpy版,支持浮点数

linspace()

类似arange(),第三个参数为数组长度

zeros()

根据指定形状和dtype创建全0数组

ones()

根据指定形状和dtype创建全1数组

empty()

根据指定形状和dtype创建空数组(随机值)

eye()

根据指定边长和dtype创建单位矩阵

1.1 array

np.array([[a,b,c],[x,y,z],···])

列表套列表,内嵌的列表个数为维度。

# 创建一维数组 >>>:arr = np.array([1,2,5,8]) # 创建多维数组 >>>:arr = np.array([[1,2,5,8],[2,4,6,7]]) # dtype指定数组元素类型 >>>:arr3 = np.array([1,2,3,4,5,6], dtype='float') array([1., 2., 3., 4., 5., 6.])1.2 arange

创建间隔数为1的范围数组。

np.arange(x) 指定右端点,左端点默认为0。

np.arange(x,y) 指定左右端点。

# 创建0~5,间隔为1的数组,右闭 >>>:np.arange(5) array([0, 1, 2, 3, 4]) # arange创建1~6,间隔为1的数组,右闭 >>>:np.arange(1,6) array([1, 2, 3, 4, 5])1.3 linspace

np.linspace(start,stop,num=50,endpoint=True, retstep=False,dtype=None,axis=0,)

创建间隔数不指定为1的范围数组。

num参数用来控制范围拆分的个数,从而控制间隔数。

endpoint用来指定区间右端点闭或开。

# linspace创建指定拆分个数的数组 >>>:np.linspace(1,10,num=10) array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]) # linspace创建数组时,endpoint可以指定区间右闭或右开 >>>:np.linspace(1,10,num=9,endpoint=False) array([1., 2., 3., 4., 5., 6., 7., 8., 9.])1.4 zeros

zeros(shape, dtype=float, order='C')

创建元素全部为0的数组。

sharp用来控制数组的维度和长度(行,列)。

>>>:np.zeros((2,5)) array([[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]])1.5 ones

np.ones(shape, dtype=None, order='C')

创建元素全部为1的数组。

sharp用来控制数组的维度和长度(行,列)。

>>>:np.ones((5,3)) array([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.], [1., 1., 1.], [1., 1., 1.]])1.6 empty

empty(shape, dtype=float, order='C')

创建一个随机元素数组。

sharp用来控制数组的维度和长度(行,列)。

>>>:np.empty((3,3)) array([[2.69329361e-312, 2.61054848e+106, 9.65232955e-312], [9.65232955e-312, 9.65232955e-312, 9.65232955e-312], [9.65232955e-312, 6.17188958e+303, 2.71615461e-312]])1.7 eye

np.eye(N, M=None, k=0, dtype=, order='C')

创建一个2维数组,对角线上为1,其他地方为0。

N:表示行数

M:表示列数,默认与行数一样

k:对角线索引。0(默认值)为主对角线,正值为上对角线,负值为下对角线。

>>>:np.eye(3,2) array([[1., 0.], [0., 1.], [0., 0.]]) >>>:np.eye(3,2,-1) array([[0., 0.], [1., 0.], [0., 1.]])2、ndarray对象的特点

这也是它和Python【列表】的不同之处。

数组对象内的元素类型必须相同数组大小不可修改3、ndarray的常用属性

属性

描述

T

数组的转置(对高维数组而言)

dtype

数组元素的数据类型

size

数组元素的个数

ndim

数组的维数

shape

数组的维度大小(以元组形式)(行,列)

reshape

重塑数组的形状(行,列)

>>>:arr array([[1, 2, 5, 8], [2, 4, 6, 7]]) >>>:arr.T array([[1, 2], [2, 4], [5, 6], [8, 7]]) >>>:a1 array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) >>>:a1.shape (3, 5) arr6 = np.array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) >>>:arr6 array([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) >>>:arr6.reshape(5,3) array([[1, 2, 3], [4, 5, 1], [2, 3, 4], [5, 1, 2], [3, 4, 5]])4、ndarray的数据类型dtype

类型

描述

布尔型

bool_

整型

int_ int8 int16 int32 int 64

无符号整型

uint8 uint16 uint32 uint64

浮点型

float_ float16 float32 float64

复数型

complex_ complex64 complex128

布尔型:

与Python不一样的是,bool_ 后面多了一个下划线_ 。

整型:

int32只能表示(-2**31,2**31-1),因为它只有32个位,只能表示2**32个数。

无符号整型:

只能用来存正数,不能用来存负数。

补充:

astype()方法可以强制转换数组的数据类型。

5、索引和切片5.1 一维数组5.1.1 索引

索引和Python的列表用法一样。

>>>:arr1 = np.array([1,2,3,4]) >>>:arr1[0],arr1[1],arr1[2] (1, 2, 3)5.1.2 切片

切片也和Python的列表用法一样。

>>>:arr1 array([1, 2, 3, 4]) >>>:arr1[1:2] array([2]) >>>:arr1[1:3] array([2, 3]) >>>:arr1[1:4] array([2, 3, 4])5.2 二维数组5.2.1 索引

取元素要确定行和列的位置:

数组[行,列]/数组[(行,列)]

>>>:arr2 = np.array([[1,2,3,4],[5,6,7,8]]) >>>:arr2 array([[1, 2, 3, 4], [5, 6, 7, 8]]) >>>:arr2[0,0],arr2[1,1] (1, 6) >>>:arr2[(0,0)] 15.2.2 切片>>>:arr3 array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29]]) >>>:arr3[1:3,1:3] array([[ 7, 8], [13, 14]]) >>>:arr3[2:5,1:4] array([[13, 14, 15], [19, 20, 21], [25, 26, 27]])5.3 布尔型索引

将同样大小的布尔数组传进索引,会返回一个有True对应位置的元素的数组

>>>:arr3 array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29]]) >>>:>4 array([[False, False, False, False, False, True], [ True, True, True, True, True, True], [ True, True, True, True, True, True], [ True, True, True, True, True, True], [ True, True, True, True, True, True]]) >>>:arr3[arr3>5] array([ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,23, 24, 25, 26, 27, 28, 29]) >>>:arr3[arr3>>:n1 = np.array([1,2,3,4,5]) >>>:n1 array([1, 2, 3, 4, 5]) >>>:n1[[1,3]] array([2, 4])三、通用函数

能对数组中所有元素同时进行运算的函数就是通用函数。

1、常用通用函数1.1 一元函数

函数

功能

abs、fabs

分别是计算任意数和浮点数的绝对值

sqrt

计算各元素的平方根

square

计算各元素的平方

exp

计算各元素的指数e**x

log

计算自然对数

sign

计算各元素的正负号

ceil

向上取整

floor

向下取整

rint

计算各元素的值四舍五入到最接近的整数,保留dtype

modf

将数组的小数部分和整数部分以两个独立数组的形式返回,与Python的divmod方法类似

isnan

计算各元素的正负号

isinf

表示那些元素是无穷的布尔型数组

cos,sin,tan

普通型和双曲型三角函数

>>>:a = -4 >>>:np.abs(a) 4 >>>:b = -4.4423423 >>>:np.abs(b) 4.4423423 >>>:np.fabs(b) 4.4423423 >>>:np.fabs(a) 4.0 # 向上取整 >>>:np.ceil(b) -4.0 # 向下取整 >>>:np.floor(b) -5.0 # 四舍五入 >>>:arr4 = np.linspace(1,5,num=4) >>>:arr4 array([1. , 2.33333333, 3.66666667, 5. ]) >>>:np.rint(arr4) array([1., 2., 4., 5.]) # 拆分整数与小数 >>>:np.modf(4.5) (0.5, 4.0) >>>:np.isnan(3) False >>>:np.isnan(np.nan) True1.2 二元函数

函数

功能

add

将数组中对应的元素相加

subtract

从第一个数组中减去第二个数组中的元素

multiply

数组元素相乘

divide、floor_divide

除法或向下圆整除法(舍弃余数)

power

对第一个数组中的元素A,根据第二个数组中的相应元素B计算A**B

maximum,fmax

计算最大值,fmax忽略NAN

miximum,fmix

计算最小值,fmin忽略NAN

mod

元素的求模计算(除法的余数)

>>>:arr1 array([1, 2, 3, 4]) >>>:arr2 array([[1, 2, 3, 4], [5, 6, 7, 8]]) >>>:np.add(1,2) 3 >>>:np.subtract(arr2,arr1) array([[0, 0, 0, 0], [4, 4, 4, 4]])2、数学统计方法

函数

功能

sum

求和

cumsum

求前缀和

mean

求平均数

std

求标准差

var

求方差

min

求最小值

max

求最大值

argmin

求最小值索引

argmax

求最大值索引

>>>:np.sum(arr1) 10 # 累加和 >>>:np.cumsum(arr2) array([ 1, 3, 6, 10, 15, 21, 28, 36], dtype=int32) >>>:arr5 = np.array([3,5,2,56,1,4,6]) >>>:arr5 array([ 3, 5, 2, 56, 1, 4, 6]) # 求最小值的索引 >>>:np.argmin(arr5) 43、随机数

有关随机数的函数在np.random的子包当中。

常用随机函数:

函数

功能

rand

给定形状产生随机数组(0到1之间的数)

randint

给定形状产生随机整数

chocie

给定形状产生随机选择

shuffle

与random.shuffle相同

uniform

给定形状产生随机数组

# 形状 >>>:np.random.rand(4,3) array([[0.21599854, 0.28993531, 0.31989618], [0.26206019, 0.69186237, 0.30819278], [0.21106428, 0.68874875, 0.58279413], [0.78623511, 0.80717789, 0.66939268]]) # 起始,终结,形状 >>>:np.random.randint(4,10,size=(2,3)) array([[9, 6, 8], [4, 7, 5]]) # 随机选择 >>>:np.random.choice(4,5) array([1, 3, 2, 0, 1]) >>>:np.random.choice([1,5,7,9],5) array([5, 9, 1, 7, 7]) # 打乱 >>>:arr7 = np.random.choice([1,2,3,4,5,7,9],5) >>>:arr7 array([2, 5, 4, 5, 3]) >>>:np.random.shuffle(arr7) >>>:arr7 array([5, 3, 4, 2, 5])



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3