Python之numpy:数组定义&ndarray操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、numpy

numpy是Python的科学计算包,包含了多维数组及多维数组的操作
numpy与Python原生array区别:

  • numpy数组在创建时有固定大小,更改ndarray的大小将创建一个新的数组并删除原始数据,不同于Python列表(可以动态增长)
  • numpy数组中的元素都需要具有相同的数据类型
  • 数组的元素也是数组(可以是Python的原生array,也可以是ndarray)的情况下,构成了多维数组
  • numpy数组操作比使用Python内置的序列可能更有效和更少的代码行

1、构建ndarray

在这里插入图片描述
之所以出现warning,是因为数组c中列表长度不一致,如图所示
在这里插入图片描述
创建ndarray时,也可指定类型,如下图:
在这里插入图片描述

2、类型转换

在这里插入图片描述

3、常用数组

1)、np.arange()

用来创建一个线性序列数组,在给定间隔内返回均匀间隔的值,格式:
arange([start,]stop[,step],dtype=None)
在这里插入图片描述

2)、np.linspace()

np.linspace(start,stop,num=50,endpoint=True)

  • 在指定的间隔内返回均匀间隔的数字,用作相同间隔采样
  • start:标量,序列起始值
  • stop:标量,除非endpoint设置为false,否则为序列的结束值
  • num:int,可选。要生成的样本数,默认值为50,必须为非负数
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/75bd23499f4345e8b474fb6e68c6b6aa.png

3)、np.zeros()

定义一个为0的数组,与之相对应的是np.ones()
在这里插入图片描述

4)、np.eye()

返回一个二维数组,其对角线为1
在这里插入图片描述

5)、np.full()

返回给定性质和类型的数组,填充fill_value
np.full(shape,full_value,dtype)

  • shape:int或int的序列新数组的性质
  • full_value:标量填充值
  • dtype:数据类型,可选数组所需的数据类型默认值为‘None’
    在这里插入图片描述

4、随机数组

1)、np.random.randint()

将随机数从‘低’(包括)返回到“高”(不包括)
语法:randint(low,high=None,size=None,dtype)

  • 使用方法1:将随机整数从低返回到高,左闭右开
  • 使用方法2:返回特定形状的随机整数
    在这里插入图片描述

2)、np.random.random()

  • 语法:np.random.random(size=None)
  • 返回随机浮点数,在半开区间(0.0,1.0)中
    在这里插入图片描述

3)、np.random.randn()

  • 语法:np.random.randn(形状)
  • 从标准正态分布中返回一个样本
    在这里插入图片描述

4)、np.random.normal()

  • 语法:np.random.normal(平均值,标准差,形状)
  • 作用:从正态分布中随机抽取样本
  • 如果平均值和标准差为0和1,或者不写这2个参数,就等同于np.random.randn()
    在这里插入图片描述

5)、np.random.choice()

从给定的1-D阵列生成随机样本

  • choice(a,size=None,replace,p=None)
  • a:1-D数组或int
    如果是ndarray,则从其元素生成随机样本
    如果是int,则生成随机样本,就像a是np.arrange(a)
  • size:int或int的元组,可选
    输出形状,如果给定的形状是例如(m,n,k),那么绘制了mnk样本,默认值为None,在这种情况下返回单个值
  • p:1-D数组,可选与a中每个条目相关的概率。如果没有给出样品则假定均匀分布一个条目
    在这里插入图片描述

6)、np.random.shuffle()

  • 通过混洗其内容来就地修改序列,此功能仅沿着a的第一轴洗牌
  • np.random.shuffle(x),x:array_like(要洗牌的数组或列表)
    在这里插入图片描述

二、ndarray操作

1、ndarray常用属性

1)、np.random.seed()

np.random.seed(Num)可以设置一组种子值,确保每次程序执行时都能生成同样的随机数组
第一次执行:
在这里插入图片描述
第二次执行
在这里插入图片描述
设置随机种子后,第一次执行:
在这里插入图片描述
第二次执行:
在这里插入图片描述
从结果不难看出,设置随机种子后,不管执行几次,生成的随机数组结果都一样。

2)、ndarray.shape

ndarray.shape()查看数组信息
在这里插入图片描述

3)、ndarray.ndim

ndarray.ndim()查看数组维度
在这里插入图片描述

4)、ndarray.size

ndarray.size查看数组元素个数
在这里插入图片描述

2、数组索引、切片

1)、一维数组

在这里插入图片描述

2)、二维数组

在这里插入图片描述

2)、修改数组元素值

在这里插入图片描述

3、数组变形

1)、ndarray.reshape()

ndarray.reshape()可以进行数据转换,比如从一维数组转换为三维数组,但是reshape不改变原数据,而是返回修改后的数组
在这里插入图片描述
小技巧:当其中一个维度不知道时,可以使用-1代替,程序会自动计算,但-1只能出现一次,否则报错
在这里插入图片描述

2)、ndarray.shape

  • 查看数组形状
  • 修改数组形状,与reshape不同,shape之间改变原数组
    在这里插入图片描述

3)、ndarray.resize()

与shape相同改变原数组

在这里插入图片描述

4)、ndarray.ravel()

  • 数组的平铺
  • 不管多少维,返回全部铺开变成一维数组,但不改变原数组
    在这里插入图片描述

4)、ndarray.T

  • 和数学意义上的转置相同
  • 不改变原数组

在这里插入图片描述

4、数组拼接

1)、np.concatenate()

np.concatenate((a1,a2,),axis=0,out=None)沿着现有轴加入一系列数据

  • a1,a2,…:array_like的序列
    除尺寸外,阵列必须具有相同形状

  • axis:int,可选,数组为一维时,只能横向合并,为二维及多维时,axis=0为横向合并,axis为1时为纵向合并
    数组连接的轴,如果axis为none,数组在使用前是扁平的,默认值为0
    在这里插入图片描述
    多维数组时,拼接思路如下:
    在这里插入图片描述
    维度不同的数组合并时,会报错:
    在这里插入图片描述
    在这里插入图片描述
    备注:
    222:每个三维数组有2个二维数组,每个二维数组有两个一维数组,每个一维数组有两个元素
    422:每个三维数组有4个二维数组,每个二维数组有两个一维数组,每个一维数组有两个元素
    242:每个三维数组有2个二维数组,每个二维数组有四个一维数组,每个一维数组有两个元素

  • 一维数组:如果有一个操作需要设置轴,一维数组只有一个轴,为轴0
    axis=0:基本操作单位为一维数组里的一个个元素

  • 二维数组:如果有一个操作需要设置轴,二维数组有两个轴,为轴0、轴1
    axis=0:基本操作单位为二维数组里的一个个一维数组
    axis=1:基本操作单位为一维数组里的一个个元素

  • 三维数组:如果有一个操作需要设置轴,三维数组有三个轴,为轴0、轴1、轴2
    axis=0:基本操作单位为三维数组里的一个二维数组
    axis=1:基本操作单位为二维数组里的一个个一维数组
    axis=2:基本操作单位为一维数组里的一个个元素

2)、np.vstack()

  • 垂直堆叠数组
  • np.vstack(tup)
    tup:ndarrays的序列
    除了第一个轴外,阵列必须具有相同形状
    在这里插入图片描述

3)、np.hstack()

水平直堆叠数组
在这里插入图片描述

5、数组分割

  • 讲一个数组分成几个较小的数组
  • 既然有多个数组堆叠,也相应有一个数组拆分成几个小数组
  • 和拼接有以下对应关系
    split ——>concatenate
    hsplit ——>hstack
    vsplit ——>vstack

1)、np.split()

语法:np.split(array,indices_or_sections,axis=0)
作用:将数组拆分为多个子数组,不改变原数组
axis:int,可选。要拆分的轴,默认为0
在这里插入图片描述

2)、np.vplit()

语法:np.vplit(any,indices_or_sections)
作用:将数组垂直拆分为多个数组(按行)
相当于np.split中axis=0
在这里插入图片描述

3)、np.hplit()

在这里插入图片描述

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ndarrayPython中的一种多维数组,可以用来存储和操作大量的数值数据。它具有许多有用的属性和方法,可以让用户更容易地处理数据。`numpy.ndarray` 是 NumPy 库中的一个类,用于表示 N 维数组(即多维数组)。它是 NumPy 的核心数据结构之一,提供了许多高效的操作,例如数组索引、切片、算术运算、数学函数等等。 在使用 `numpy.ndarray` 时,通常需要先导入 NumPy 库,然后通过 `numpy.array()` 函数将 Python 列表或元组转换成 N 维数组,例如: ```python import numpy as np # 从列表创建一个一维数组 a = np.array([1, 2, 3]) print(a) # 输出:[1 2 3] # 从元组创建一个二维数组 b = np.array([(1, 2, 3), (4, 5, 6)]) print(b) # 输出: # [[1 2 3] # [4 5 6]] ``` 可以通过 `ndarray.shape` 属性获取数组的维度信息,通过 `ndarray.dtype` 属性获取数组元素的数据类型,例如: ```python # 获取数组的形状 print(a.shape) # 输出:(3,) print(b.shape) # 输出:(2, 3) # 获取数组元素的数据类型 print(a.dtype) # 输出:int64 print(b.dtype) # 输出:int64 ``` 还可以使用各种方法对数组进行操作,例如: ```python # 数组加法 c = a + b print(c) # 输出: # [[2 4 6] # [5 7 9]] # 数组乘法 d = a * b print(d) # 输出: # [[ 1 4 9] # [ 4 10 18]] # 数组转置 e = b.T print(e) # 输出: # [[1 4] # [2 5] # [3 6]] ``` 这些只是 `numpy.ndarray` 类提供的一些基本功能,NumPy 库还有更多高级的特性和函数可以探索。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值