Python基础之Numpy的基本用法详解

一、数据生成

1.1 手写数组

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) # 一维数组
b = np.array([[1, 2], [3, 4]]) #二维数组

1.2 序列数组

numpy.arange(start, stop, step, dtype),start默认0,step默认1

c = np.arange(0, 10, 1, dtype=int)  # =np.arange(10)  [0 1 2 3 4 5 6 7 8 9]
d = np.array([np.arange(1, 3), np.arange(4, 6)])  # 二维数组
# 不过为了避免麻烦,通常序列二维数组都是通过reshape进行重新组织
dd = c.reshape(2, 5)  # 将一维数组重新组合成2行5列

1.3 随机数组

numpy.random.random(size=None) 该方法返回[0.0, 1.0)范围的随机小数。
numpy.random.randint() 该方法返回[low, high)范围的随机整数。
该方法有三个参数low、high、size 三个参数。默认high是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)
numpy.random.randn(d0,d1,…,dn) 该方法返回一个或一组样本,具有正态分布
np.random.normal 指定期望和方差的正太分布

e = np.random.random(size=2)  # 一维数组,元素两个,[0.0,1.0]的随机数
f = np.random.random(size=(2, 3))  # 两行三列数组,[0.0,1.0]的随机数

h = np.random.randint(10, size=3)  # [0,10]范围内的一行三列随机整数
i = np.random.randint(5, 10, size=(2, 3))  # [5,10]范围内的2行3列随机整数

1.4 其他方式数组

numpy.zeros 创建指定大小的数组,数组元素以0 来填充
numpy.ones 创建指定形状的数组,数组元素以1 来填充
numpy.empty 创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组,里面的元素的值是之前内存的值
np.linspace 创建一个一维数组,数组是一个等差数列构成的
numpy.logspace 创建一个于等比数

j = np.zeros((2, 5))
k = np.ones((2, 5))
l = np.linspace(1, 20, 10)

二、数组属性查看

ndarray.ndim
darray.shape 数组的维度和列,对于矩阵,n 行m 列
ndarray.size 数组元素的总个数,相当于.shape 中n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray 元素的实部
ndarray.imag ndarray 元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

print('ndim:数组的秩(维度)'.center(20, '*'))
print('ndim:', i.shape[1])

三、数组索引

x = np.arange(1, 13) # 一维数组
a = x.reshape(4, 3) # 二维数组
print(‘x:', x)
print(‘a:', a)

3.1 一维数组的索引

print(x[2:])
print(x[3:8])

3.2 二维数组的索引

print(a[0])  # 第一行
print(a[2, 2])  # 第三行第4列
print(a[:, 2])
print(a[::2, 0])  # 所有奇数行第1列数据
print(a[(2, 1), (1, 2)])  # 第3行第2列,第2行第3列   = np.array((a[2,1],a[1,2]))取出来后在重新生成新的数组
print(a[-2])  # 获取倒数第二行
print(a[::-1])  # 行倒序
print(a[::-1, ::-1])  # 行列倒序

四、数组的方法

4.1 改变数组维度

reshape将一维数组变成二维或者三维
ravel将三维数组变成一维数组,flatten将二维数组变成一维数组

4.2 数组拼接

使用numpy.hstack(a1,a2) 函数将两个数组水平组合
numpy.vstack(a1,a2) 函数可以将两个或多个数组垂直组合起来形成一个数组
使用numpy.concatenate((a1, a2, …), axis),控制axis参数的值也可以实现hstack和vstack的功能,axis=0等同于vstack、axis=1等同于hstack

4.3 数组分隔

b = np.split(x, 4)  # 将一个一维数组四等分, 用b[1]的方式获取每个块的数据
# print(b[1])
c = np.split(a, 2, axis=0)  # 二维数组的垂直分隔,按行分隔成两部分
# print(c[0])
d = np.split(a, [2], axis=1)  # 二维数组的水平分隔,按列分隔成两部分
# print(d[0])

4.4 算术运算

加减乘除: add(),subtract(),multiply() 和divide()
np.sum() 求和
np.prod() 所有元素相乘
np.mean() 平均值
np.std() 标准差
np.var() 方差
np.median() 中数
np.power() 幂运算
np.sqrt() 开方
np.min() 最小值
np.max() 最大值
np.argmin() 最小值的下标
np.argmax() 最大值的下标
np.inf 无穷大
np.exp(10) 以e 为底的指数
np.log(10) 对数

到此这篇关于Python基础之Numpy的基本用法详解的文章就介绍到这了,更多相关Python Numpy用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

赞 (0)

相关推荐

  • python3 numpy中数组相乘np.dot(a,b)运算的规则说明

    python np.dot(a,b)运算规则解析 首先我们知道dot运算时不满足交换律的,np.dot(a, b)与np.dot(b, a)是不一样的 另外np.dot(a,b)和a.dot(b)果是一样的 1.numpy中数组相乘np.dot(a,b)运算条件: 对于两数组a和b : 示例一: a = np.array([[3], [3], [3]]) # (3,1) b = np.array([2, 2, 1]) # (3,) print(a, "\na的shape", a.sha

  • python使用NumPy文件的读写操作

    一.使用NumPy读写文本文件 在数据分析中,经常需要从文件中读取数据或将数据写入文件,常用的存储文件的格式有文本文件.CSV格式文件.二进制格式文件和多维数据文件等. 1.将1维或2维数组写入TXT文件或CSV格式文件 在NumPy中,使用savetxt()函数可以将1维或2维数组写入后缀名为txt或csv的文件.函数格式为: **numpy.savetxt(fname,array,fmt='%.18e',delimiter=None,newline='\n', header='', foot

  • Python数据清洗工具之Numpy的基本操作

    1. Numpy(Numberical Python) Anaconda中已经集成了NumPy,可以直接使用.如果想要自行安装的话,可以使用流行的Python 包安装程序 pip 来安装 NumPy,目前使用的是Anaconde的环境进行学习和使用这个库 1.1 这库的安装方法 CMD :pip install numpy 或者使用清华源的镜像库:pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple (直接复制可用) 如果想查

  • python 将numpy维度不同的数组相加相乘操作

    第一种 np矩阵可以直接与标量运算 >>>import numpy as np >>>arr1 = np.arange(12).reshape([2,2,3]) >>>arr1 array([[[ 0, 1, 2], [ 3, 4, 5]], [[ 6, 7, 8], [ 9, 10, 11]]]) >>>arr1*5 array([[[ 0, 5, 10], [15, 20, 25]], [[30, 35, 40], [45, 50

  • Python利用numpy实现三层神经网络的示例代码

    本文主要介绍了Python利用numpy实现三层神经网络的示例代码,分享给大家,具体如下: 其实神经网络很好实现,稍微有点基础的基本都可以实现出来.主要都是利用上面这个公式来做的. 这是神经网络的整体框架,一共是三层,分为输入层,隐藏层,输出层.现在我们先来讲解下从输出层到到第一个隐藏层. 使用的编译器是jupyter notebook import numpy as np #定义X,W1,B1 X = np.array([1.0, 0.5]) w1 = np.array([[0.1, 0.3,

  • Python基础之numpy库的使用

    numpy库概述 numpy库处理的最基础数据类型是由同种元素构成的多维数组,简称为"数组" 数组的特点: 数组中所有元素的类型必须相同 数组中元素可以用整数索引 序号从0开始 ndarray类型的维度叫做轴,轴的个数叫做秩 numpy库的解析 由于numpy库中函数较多而且容易与常用命名混淆,建议采用如下方法引用numpy库 import numpy as np numpy库中常用的创建数组函数 函数 描述 np.array([x,y,z],dtype=int) 从Python列表和

  • python numpy中mat和matrix的区别

    个人理解: np.mat() import numpy as np b=np.mat(a)是将a转化为矩阵 如果a本身是矩阵,就是创建a的一个引用,相当于:np.matrix(a,copy=False) 无论a和b哪一个发生改变都会影响矩阵本身. 如果a不是矩阵,此时b就是a转化成矩阵的结果,是在原有的基础上进行copy(). np.matrix() 单纯的是创建一个矩阵. 补充:python中numpy模块下函数array()和mat()的区别 1. mat()函数与array()函数生成矩阵

  • Python 用NumPy创建二维数组的案例

    前言 上位机实战开发先放一放,今天来学习一个新的内容-NumPy的使用 1 一维数组 例:用普通方法生成一维数组 num = [0 for i in range(1,5)] # 创建一维数组 print(num) # 打印数组 print("-"*50) # 分割线 num[2]=6 # 将第三个元素修改位6 print(num) # 打印数组 print("-"*50) # 分割线 运行结果 例:用numpy生成一维数组 from numpy import * m

  • python numpy中setdiff1d的用法说明

    一.函数解释 setdiff1d(ar1, ar2, assume_unique=False) 1.功能:找到2个数组中集合元素的差异. 2.返回值:在ar1中但不在ar2中的已排序的唯一值. 3.参数: ar1:array_like 输入数组. ar2:array_like 输入比较数组. assume_unique:bool.如果为True,则假定输入数组是唯一的,即可以加快计算速度. 默认值为False. 二.具体示例 1.assume_unique = False的情况: a = np.

  • Python numpy.power()函数使用说明

    power(x, y) 函数,计算 x 的 y 次方. 示例: x 和 y 为单个数字: import numpy as np print(np.power(2, 3)) 8 分析:2 的 3 次方. x 为列表,y 为单个数字: print(np.power([2,3,4], 3)) [ 8 27 64] 分析:分别求 2, 3, 4 的 3 次方. x 为单个数字,y 为列表: print(np.power(2, [2,3,4])) [ 4 8 16] 分析:分别求 2的 2, 3, 4 次

  • python numpy.power()数组元素求n次方案例

    如下所示: numpy.power(x1, x2) 数组的元素分别求n次方.x2可以是数字,也可以是数组,但是x1和x2的列数要相同. >>> x1 = range(6) >>> x1 [0, 1, 2, 3, 4, 5] >>> np.power(x1, 3) array([ 0, 1, 8, 27, 64, 125]) >>> x2 = [1.0, 2.0, 3.0, 3.0, 2.0, 1.0] >>> np.

  • Python Numpy之linspace用法说明

    linspace生成有序列表,重点在数据范围与数据个数上 linspace(0,1,11),即从0到1闭区间,划分为11个数据点 >>> import numpy as np >>> a = np.linspace(0,1,10) >>> a array([0. , 0.11111111, 0.22222222, 0.33333333, 0.44444444, 0.55555556, 0.66666667, 0.77777778, 0.88888889

随机推荐