python-numpy库

article/2025/9/10 8:46:02

目录

ndarray对象

arange函数

array函数

random函数

其他创建数组方法

切片和索引及修改数组维度

数组的拼接

数组的分割

数组的转置

数组的运算


numpy(Numerical Python)是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等。其提供最核心类型为多维数组类型(naray) ,支持大量的维度数组与矩阵运算,numpy 支持向量处理ndarray对象,提高程序运算速度。安装:pip  install numpy

ndarray对象

numPy最重要的一个特点是其N维数组对象ndarray,它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。

ndarray对象是用于存放同类型元素的多维数组。

ndarray中的每个元素在内存中都有相同存储大小的区域。

ndarray内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。
  • 数据类型或dtype,描述在数组中的固定大小值的格子。
  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。

numPy的数组中比较重要ndarray对象属性有:

arange函数

该函数可以传入一个整数类型的参数n,函数返回值看着像一个列表,其实返回值类型是numpy.ndarray。这是Numpy中特有的数组类型。如果传入arange函数的参数值是n,那么arange,函数会返回0到n-1的ndarray类型的数组。(左闭右开原则),用来创建指定范围数据数组,语法格式:numpy.arange(start, stop, step, dtype)

参数:

  • start:起始值,默认为0  
  • stop : 终止值(不包含,符合左闭右开原则)
  • step :步长,默认为1  ,
  • dtype : 返回的数据类型,如果没有指定,返回输入时的数据类型
import numpy as npa = np.arange(10) 
print(a,type(a))b = np.arange(5, 10, dtype='float', step=2)
print(b)

  

array函数

array函数可以生成多维数组。例如,如果要生成一个二维数组,需要向array 函数传递一个列表类型的参数。每一个列表元素是一维的ndarray类型数组,作为二维数组的行。另外,通过ndarray类的shape属性可以获得数组每一维的元素个数(元组形式),也可以通过shape[n]形式获得每一维的元素个数,其中 n是维度,从0开始。语法格式如下:

numpy.array(object, dtype=None, copy= True, order = None, subok =False, ndmin =0)

import numpy as np# 使用array创建一个一维数组,一层[]括号
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
print(type(a), a)  # 打印结果:<class 'numpy.ndarray'> [1 2 3 4 5 6 7 8 9]
# 使用array创建一个二维数组,两层[]括号
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(b)
# array 的dtype参数使用,指定创建的数组类型是浮点型,默认为整数型
c = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9], dtype='float')
print('指定dtype参数创建数组:',c)
# array 的ndmin参数使用,指定创建数组的维度
d = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9], ndmin=3)  # 创建三维数组
print('指定ndmin参数创建数组:',d)

  

random函数

numpy.random.random(size=None),该方法这回[0.0,1.0)范围的随机数。

numpy.random.randn(d0,d1.....dn),randn函数返回一个或一组具有标准正态分布(期望为0,方差为1)的样本。dn表格每个维度,返回值为指定维度的array。

numpy.random.normal指定期望和方差的正态分布。正态分布(高斯分布),参数:loc-期望;scale-方差;size-形状

import numpy as np# 随机数创建,size的参数决定随机数组的维度及个数,size参数的个数代表其维度
b = np.random.random(size=None)  # 创建一个随机数,size参数可以不写或者为None
print(b)c = np.random.random(size=(5,))  # 指定创建随机数的个数的一维数组size = num或size = (num,)
print(c)# 创建二维数组的随机数,第一个数字表示行数,第二个表示列数
d = np.random.random(size=(2, 4))
print(d)# 创建三维数组的随机数,第一个数字表示组数(几组),第二个表示行数,第三个表示列数(每行具有的数量)
e = np.random.random(size=(3, 2, 4))
print(e)# 随机整数
# f = np.random.randint(5)   # 同使用import random
f = np.random.randint(5, size=6)
print(f)g = np.random.randint(5, 10, size=(3, 3))  # 前两个数表示随机数的起始值,不同于import random中的randint(双闭合),numpy为左闭右开
print(g)
import numpy as npdef randnTest():a = np.random.randn(5)print(a)b = np.random.randn(3, 5)print(b)c = np.random.randn(2, 3, 5)print(c)def normalTest():# 创建指定期望和方差的正态分布a = np.random.normal(size=3)print(a)b = np.random.normal(loc=2, scale=0.001, size=(3, 4))print(b)

其他创建数组方法

ndarray数组除了可以使用底层ndarray构造器来创建外,也可以通过以下几种方式来创建。

zeros创建指定大小的数组,数组元素以0来填充。numpy.zeros(shape, dtype = float, order = ‘C’)

a = np.zeros(5, dtype='int')
print(a)
b = np.zeros((3, 5), dtype='int')
print(b)

 

ones 创建指定形状的数组,数组元素以1来填充。numpy.ones(shape,dtype = None, order = 'C)

c = np.ones((3, 5), dtype='int')
print(c)

 

empty方法用来创建一个指定形状(shape)、数据类型(dtype),且未初始化的数组,里面的元素的值是之前内存的值。多次随机数结果相同,empty参数:

for i in range(3):print(np.empty((3, 4), dtype='int'))

linspace函数用于创建一个一维数组,数组是一个等差数列构成的。np.linspace(start, stop, num=50, endpoint=Tnue, retstep=False, dtype=None)

print(np.linspace(1,20,10))

 

logspace函数用于创建一个于等比数列。格式如下:

np.logspace(start, stop, num=50, endpoint= True, base=10.0, dtype=None),参数:

切片和索引及修改数组维度

ndarray对象的内容可以通过索引或切片来访问和修改,与Python中 list的切片操作一样。ndarray数组可以基于0-n的下标进行索引,并设置start, stop 及 step 参数进行,从原数组中切割出一个新数组。通过切片可以获取到新数组,即使赋值给新的变量,但还是原来数组的视图。如果对切片数组中元素的值,进行修改会影响原来的数组。所以需要是深拷贝的方法:np.copy(),(括号里的参数为要拷贝的内容,可通过索引切片获取)

处理数组的一项重要工作就是改变数组的维度,包含提高数组的维度和降低数组的维度,还包括数组的转置。Numpy提供的大量API可以很轻松地完成这些数组的操作。例如,通过reshape方法可以将一维数组变成二维、 三维或者多维数组。通过ravel方法或fatten方法可以将多维数组变成一维数组。 改变数组的维度还可以直接设覃Numpy数组的shape属性(元组类型),通过resize方法也可以改变数组的维度。

import numpy as np# 改变数组的形状(维度),修改维度时,修改后的数据包含元素与修改的数据个数要相等,如a 12个 ,b 3*4个 ,c 2*2*3个
a = np.arange(12)
b = a.reshape((3, 4))
print(b)
c = a.reshape((2, 2, 3))
print(c)
d = np.reshape(c,(2,6))
print(d)# 将多维数组修改为一维数组
print(d.reshape(-1))# 切片操作
print(a[::-1])  # 倒置反转
# 切片使用[行进行切片,列进行切片]  [start:stop:step,start:stop:step,start:stop:step]
print(c[1][1][2])   # 使用方法同list
# 通过坐标法获取
print(c[1,1,2])
# 同时获取不同的行和列数据
print(c[(0,0,0),(0,1,1),(1,1,1)])

数组的拼接

numpy.concatenate函数用于沿指定轴连接相同形状的两个或多个数组,

numpy.concatenate((al, a2,...), axis),参数说明:

  • al, a2,....相同类型的数组
  • axis:沿着它连接数组的轴,默认为0,0为垂直,1为水平
import numpy as npa = np.random.randint(1, 6, size=(2, 4))
b = np.random.randint(5, 11, size=(2, 4))
print(a)
print(b)
c = np.hstack([a, b])  # 水平合并
print(c)
d = np.vstack([a, b])  # 垂直合并
print(d)
e = np.concatenate((a, b), axis=0)  # 0为垂直
print(e)
f = np.concatenate((a, b), axis=1)  # 1为水平
print(f)

数组的分割

split分隔

numpy.split函数沿特定的轴将数组分割为子数组,格式如下:

numpy.split(ary, indices or _sections, axis),参数说明:

  • ary :被分割的数组
  • indices_ or_ sctions :如果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置。
  • axis:沿着哪个维度进行切向,默认为0,横向切分。为1时,纵向切分。

水平分隔

分隔数组是组合数组的逆过程,与组合数组一样,分隔数组也分为水平分隔数组和垂直分隔数组。水平分隔数组与水平组合数组对应。水平组合数组是将两个或多个数组水平进行收尾相接,而水平分隔数组是将已经水平组合到一起的数组再分开。使用hsplit函数可以水平分隔数组,该函数有两个参数,第1个参数表示待分隔的数组,第2个参数表示要将数组水平分隔成几个小数组。

垂直分隔

垂直分隔數组是垂直组合数组的逆过程。垂直组合數组是将两个或多个数组垂直进行首尾相接,而垂直分隔数组是将已经垂直组合到一起的数组再分开。使用vsplit函数可以垂直分隔数组,该函数有两个参数,第1个参数表示待分隔的数组,第2个参数表示将数组垂直分隔成几个小数组。

数组的转置

二维数组a[i][j]   转置结果a[j][i] 

三位数组a[i][j][k]   默认转置结果a[k][j][i] 

import numpy as npa = np.random.randint(1, 11, size=(2, 5, 3))
print(a)
# 三种转置的方法
print(a.transpose())
print(np.transpose(a))
print(a.T)

数组的运算

算术函数:如果参与运算的两个对象都是ndarray,并且形状相同,则会在相同位置之间进行运算。NumPy算术函数包含简单的加减乘除: add(), subtract(), multiply()和divide()。

数学函数:NumPy提供了标准的三角函数: sin()、 cos()、 tan()

a = np.array([0, 30, 45, 60, 90])
print(np.sin(a * np.pi / 180))  # 通过pi/180转化为弧度

  

聚合函数:NumPy提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差中和方差等

 


http://chatgpt.dhexx.cn/article/QULRhAb6.shtml

相关文章

Python中的numpy库介绍!

机器学习算法中大部分都是调用Numpy库来完成基础数值计算的。 安装方法&#xff1a; pip3 install numpy1. ndarray数组基础 python中用列表保存一组值&#xff0c;可将列表当数组使用。另外&#xff0c;python中有array模块&#xff0c;但它不支持多维数组&#xff0c;无论是…

NumPy库的介绍与使用(一)

目录 一、NumPy库简介二、NumPy库入门1.数据的维度2.安装NumPy3.导入NumPy库 三、NumPy的数组对象&#xff1a;ndarray1 为什么要引入ndarry呢&#xff1f;2. ndarray是一个多维数组对象2.1 定义2.2 内存中的存储形式2.3 ndarray对象的属性2.4 ndarray数组的元素类型 3. ndarra…

Numpy库的介绍及使用

Numpy库的介绍及使用 1. Numpy库入门1.1 数据的维度1.2 ndarray的优势1.3 ndarray对象的属性1.4 ndarray数组的创建和变换1.4.1 ndarray数组的创建方法1.4.2 ndarray数组维度的变换 1.5 ndarray数组的索引和切片1.6 ndarray数组的运算 2. 数据存取与函数2.1 CSV存取数据2.2 多维…

numpy库的安装方法

安装numpy库的方法 winR&#xff0c;输入cmd&#xff0c;打开cmd 在cmd中输入pip install numpy&#xff0c;回车 输入pip list&#xff0c;查看numpy是否安装成功 4.在cmd中输入python&#xff0c;回车&#xff0c;在输入import numpy&#xff0c; 验证numpy库是否可以被调…

Numpy库的安装

Numpy库的安装 一、numpy简介 NumPy是一个功能强大的Python库&#xff0c;主要用于对多维数组执行计算。NumPy提供了大量的库函数和操作&#xff0c;可以帮助程序员轻松地进行数值计算。这类数值计算广泛用于以下任务&#xff1a; **机器学习模型&#xff1a;**在编写机器学…

numpy库的一些解释

Numpy库介绍 NumPy是一个的Python库&#xff0c;主要用于对多维数组执行计算。 NumPy这个词来源于两个单词-- Numerical [njuːˈmerɪkl] &#xff08;数值;数值法;数值的;数字的&#xff09;和 Python。主要用来进行数值计算。 有以下几个特点: 1.numpy内置了并行运算功能&a…

Numpy库

Numpy库入门 一维数据&#xff1a;由对等关系的有序或无序数据构成&#xff0c;采用线性方式组织。 二维数据由多个一维数据构成&#xff0c;是一维数据的组合形式。&#xff08;表格&#xff09; 多维数据由一维或二维数据在新维度上扩展形成。 Numpy:开源的Python科学计算…

Python Numpy库的超详细介绍

Numpy库是Python中的一个科学计算库,本文主要介绍了ndarray的基本操作、 ndarray运算等各种Numpy库的超详细教程,需要的朋友可以参考下 1、Numpy概述 1.1 概念 Python本身含有列表和数组&#xff0c;但对于大数据来说&#xff0c;这些结构是有很多不足的。由于列表的元素可以…

python进阶--Numyp库(一)

一、Numpy库介绍 NumPy&#xff08;Numerical Python&#xff09;是Python的⼀种开源的数值计算扩展。提供多维数组对象&#xff0c;各种派⽣对象&#xff08;如掩码数组和矩阵&#xff09;&#xff0c;这种⼯具可⽤来存储和处理⼤型矩阵&#xff0c;⽐Python⾃身的嵌套列表&am…

解决端口8080被占用的问题!

今天在回顾cms项目的时候发现怎么都启动不了&#xff0c;看见左下角报错 原来是8080端口被别的进程占用了。 解决方法&#xff1a;winr cmd 回车 在命令窗口中 输入netstat -ano就可以查看所有端口显示的状态信息 找到这个本地地址是0.0.0.0:8080最后面的PID&#xff0c;就是…

8080端口被占用怎么办

做项目时肯定会遇到8080端口被占用的情况&#xff0c;其实解决办法很简单&#xff1a; CtrlR键&#xff0c;输入cmd: 复制这串代码到cmd界面&#xff1a; netstat -aon|findstr "8080" 可以看到8080确实被占用了&#xff1a; 把后面的都终止掉&#xff…

解决localhost:8080被占用

解决方法如下&#xff1a; 1.以管理员方式打开CMD&#xff0c;我的电脑——c盘——windows——system32——CMD.exe——右键管理员身份打开 1.在cmd里输入netstat -ano|findstr 8080&#xff0c;查看是哪个进程占用了8080端口。 2.输入taskkill /pid 11904 /f&#xff0c;结束…

解决SpringBoot默认Tomcat端口号8080被占用

问题描述&#xff1a; 打开Eclipse后启动SpringBoot项目&#xff0c;发现8080端口被占用。然后寻找Eclipse是否有未关闭的Tomcat项目&#xff0c;发现并没有&#xff0c;重启Eclipse仍然会出现端口占用的请况。 给出的错误信息显示。 Description: The Tomcat connector co…

解决tomcat端口8080被占用

1、eclipse启动tomcat时8080端口被占用&#xff1a; 2、打开CMD&#xff1a; 命令查找正在使用8080端口的进程&#xff0c; netstat -ano|findstr 8080 杀死该进程&#xff0c; taskkill /pid 117800 /f 命令说明&#xff1a;taskkill /pid 117800&#xff08;进程id号&am…

idea报8080端口被占用解决

1错误提示 Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port. 2原因 这是因为我们某个程序占用了8080端口&#xff0c;有可能是我们以前某个项目没有正确暂停导致。 3解决 1&#xff1a;打开cmd窗…

Tomcat 8080 端口被占用解决方案

1. 报错记录 原因&#xff1a;端口号8080被其他应用程序占用 2. 解决方案 方案一&#xff1a;结束占用端口程序 在Windows控制台中输入下面内容查询占用8080端口的进程id netstat -ano|findstr "8080" ctrlshiftesc打开任务管理器&#xff0c;在服务通过pid找到占用程…

解决8080端口号被占用问题

在使用TomCat时偶尔会出现8080端口被占用的提示&#xff0c;为此总结出如下解决方法&#xff1a; 1.以管理员身份打开命令提示符 2.输入netstat -ano|findstr "8080" 3. 上图最右边的6636、3280、6636为进程id,接下来就要结束这些进程 4.输入taskkill /f /pid 663…

解决windows系统下8080端口被占用

1.winR&#xff1a;输入cmd&#xff0c;回车 输入指令&#xff1a;netstat -ano | findstr 8080 指令的意思是找出占用8080端口的进程pid 2. 此时找到8080端口号的pid是11660&#xff08;pid是会变化的&#xff09; 终止进程 释放端口 输入指令&#xff1a;taskkill …

解决SpringBoot8080端口被占用问题

问题描述&#xff1a; 大致意思是我们使用的8080端口已经被占用了。 解决方法&#xff1a; 方法一&#xff1a;修改我们要使用的端口 在resource目录下面找到application.properties然后输入 server.port 8081&#xff08;注意&#xff1a;这里不一定非要是8081&#xff0c;…

解决tomcat 8080端口被占用问题

首先&#xff0c;我们要看一下究竟是什么占用了8080端口&#xff1a; winr 打开运行窗口输入 cmd 输入 netstat -ano 查看开放的所有端口 端口太多&#xff0c;我们可以使用 netstat -ano|findstr "端口号" 查看占用8080端口的进程 netstat -ano|findstr "8080…