Python --NumPy库基础方法(1)

NumPy

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

安装

安装 NumPy 最简单的方法就是使用 pip 工具,语法格式如下:

pip install numpy
pip install jupyter notebook

在pycharm打开jupyter notebook:

打开pycharm中的命令端,输入jupyter notebook,等待一会会自动跳转,若是不跳转,点击最下面的链接:

在这里插入图片描述
在这里插入图片描述

跳转页面后,创建新的程序,我们使用jupyter学习Numpy。

Numpy运行方法:Shift键 + Enter键。如:

在这里插入图片描述

写好代码后直接按下两键。更多具体的jupyter notebook界面操作方法,自行查找详细操作。

array创建数组

numpy模块的array函数可以生成多维数组。语法格式如下:

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

object :数组或嵌套的数列。 dtype :数组元素的数据类型,可选。 copy: 对象是否需要复制,可选

order :创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)

subok :默认返回一个与基类类型一致的数组。 ndmin :指定生成数组的最小维度

创建一维

import numpy as np	#导包b=np.array([1,2,3,4,5,6])
print(b,b.shape)	#shape显示数组的维度
----------- 	#红线下为输出结果
[1 2 3 4 5 6] (6,)

创建二维

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
print("a数组的维度:",a.shape)
--------------------------
[[1 2 3][4 5 6][7 8 9]]
a数组的维度: (3, 3)

ndmin参数的使用

#ndmin参数:
a = np.array([1,2,3,4,5,6],ndmin = 3)	#指定生成数组的最小维度为3
print(a)
------------------
[[[1 2 3 4 5 6]]]

dtype参数的使用

#dtype参数:改变数组元素的数据类型
#将数组内的元素强制变成浮点型
a = np.array([1,2,3,4,5,6],dtype = np.float64)
print(a)
-----------------
[1. 2. 3. 4. 5. 6.]

arange创建数组

使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:

numpy.arange(start, stop, step, dtype)

start :起始值,默认为0。 stop: 终止值(不包含)。 step :步长,默认为1

dtype :返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

#arange函数创建数值范围  
#格式:numpy.arange(start,stop,step,dtype)  取值:左闭右开#arange生成 0 到 5 的数组
x = np.arange(0,5,dtype=int)
print(x)
#-------------------------
#arange设置了起始值、终止值及步长
y = np.arange(10,20,2,dtype = np.float64)
print(y)
#--------------------
#创建二维数组
z = np.array([np.arange(1,4),np.arange(4,7),np.arange(7,10)])
print(z)

输出结果:

[0 1 2 3 4]
-------------------
[10. 12. 14. 16. 18.]
------------------------
[[1 2 3][4 5 6][7 8 9]]

随机数创建

numpy中的random模块包含了很多方法可以用来产生随机数。

随机数

#返回[0.0,1.0)范围的随机数
#格式:numpy.random.random(size=None) ---> size:表示数据长度维度x=np.random.random(size=4)
print(x)
----------------
[0.39089737 0.27449493 0.67038824 0.18743961]
y = np.random.random(size=(3,4))
print(y)
-----------------
[[0.46791494 0.55568935 0.89622367 0.47164053][0.01337248 0.02821914 0.4660383  0.74495001][0.96514074 0.0456898  0.11795308 0.99197463]]

随机整数

#返回整数
#格式:numpy.random.randint(low,high,size)x = np.random.randint(5,size=10)  #---> size:表示数据长度维度
print(x)
y = np.random.randint(5,10,size=(3,4))
print(y)
$----------------------------------------$
[0 3 3 4 4 0 0 0 3 0]
---------------------
[[6 7 9 6][6 9 8 6][6 5 9 6]]

正太分布

#正太分布  具有标准正太分布(期望0 方差1)
#格式:numpy.random.randn(d0,d1,d2,…,dn)
x = np.random.randn()
print(x)
------------------------
0.6666711910611633y = np.random.randn(2,4)
print(y)
---------------------
[[-0.11042552  0.03771884  0.70705774  0.49759948][-1.83386129  0.7898438  -0.76104361 -0.4511798 ]]z = np.random.randn(2,3,4)
print(z)
---------------------
[[[ 1.43434958  0.73995544  0.14880011  0.7429944 ][-0.51394552  0.84819023 -0.56734252  0.27952588][ 0.11325095 -1.35043481  0.18511292  0.67372189]][[ 1.74016415  0.890556    0.55970424  0.42848806][ 1.3033731   0.52913202 -0.07831286 -1.33728252][-0.36403971  0.9837446   0.87700483 -0.19645756]]]
#指定期望和方差的正太分布  ---->格式:np.random.normal(loc,scale,size)
print(np.random.normal(loc = 3,scale = 4,size = (2,2,3)))
------------------
[[[-0.38508127  8.72575577  4.77984012][ 5.28413947 11.29557292  5.42547076]][[ 2.86169592 -3.9155134   1.19362943][ 4.2279321  -2.54565136 -1.06140229]]]

ndarray对象

在这里插入图片描述

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

x1 = np.random.randint(10,size = 6)
x2 = np.random.randint(10,size = (3,4))
x3 = np.random.randn(3,4,5)
print("ndim:",x1.ndim,x2.ndim,x3.ndim)   #ndim表示查看维度 
结果:ndim: 1 2 3print("shape:",x1.shape,x2.shape,x3.shape)   #查看尺度,对于矩阵,n行n列
结果:shape: (6,) (3, 4) (3, 4, 5)print("dtype:",x1.dtype,x2.dtype,x3.dtype)     #查看类型
结果:dtype: int32 int32 float64print("size:",x1.size,x2.size,x3.size)     #元素的个数,相当于shape中n*m
结果:size: 6 12 60print("itemsize:",x1.itemsize,x2.itemsize,x3.itemsize)   #ndarray对象中每个元素的大小,以字节为单位
结果:itemsize: 4 4 8

zeros创建

创建指定大小的数组,数组元素以 0 来填充,格式如下:

numpy.zeros(shape, dtype = float, order ='C')
#zeros创建
#格式:numpy.zeros(shape,dtype = float,order = 'c')x = np.zeros(5)   #创建的全0矩阵,默认是浮点型的
print(x)
结果:[0. 0. 0. 0. 0.]#设置类型为整数
y = np.zeros((5,),dtype = int)
print(y)
结果:[0 0 0 0 0]#创建二维全0数组
z = np.zeros((2,2))
print(z)
结果:[[0. 0.][0. 0.]]

zeros_like

根据传入的数组形状创建全为0的数组。

#zeros_like:根据传入的数组形状创建全为0的数组
a = np.array([np.arange(1,5),np.arange(4,8)])
z = np.zeros_like(a)
print(z)
--------------
array([[0, 0, 0, 0],[0, 0, 0, 0]])

ones创建

创建指定形状的数组,数组元素以 1 来填充,格式如下:

numpy.ones(shape, dtype = None, order = 'C')
#ones创建   创建指定形状的数组,数组元素以1来填充
#格式:numpy.ones(shape,dtype = None,order = "c")x = np.ones(5)
print(x)
结果:array([1., 1., 1., 1., 1.])y = np.ones((2,3),dtype = int)
print(y)
结果:array([[1, 1, 1],[1, 1, 1]])

ones_like

z = np.ones_like([np.arange(4,8),np.arange(2,6)])
print(z)
-------------------------
array([[1, 1, 1, 1],[1, 1, 1, 1]])

empty创建

创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组,里面的元素的值是之前内存的值,格式如下:

numpy.empty(shape, dtype = float, order ='C')
#empty创建   创建一个指定形状、数据类型的数组,里面的元素值是之前内存里的,会变的
#格式:numpy.empty(shape,dtype = float,order = "c")x = np.empty([3,2],dtype = int)
print(x)
--------------------
array([[      3442,     946688],[ 184156160, 1936288828],[1836016500,   30817904]])

empty_like

y = np.empty_like([np.arange(1,5),np.arange(4,8)])
print(y)
-------------------------
array([[1136351920,        567,          0,          0],[         0,          0,          0,          0]])

empty创建数组的使用

#empty创建数组的使用x = np.arange(5)
y = np.empty(10,dtype = int)
np.add(2,x,out=y[:5])  #将x的值追加2,赋给y的前五个值   未被接收,可以直接打印出结果
-----------------------------
array([2, 3, 4, 5, 6])

full()创建

创建全为某个指定值的数组,格式如下:

full(shape,fill_value)
# full的创建  创建全为某个指定值的数组
#格式:full(shape,fill_value)a = np.full((2,2),3)   #创建一个2*2的矩阵,里面全为3
print(a)
----------------
array([[3, 3],[3, 3]])

full_like

#full_like
b = np.full_like(([np.arange(1,5),np.arange(4,8)]),4)
print(b)
------------------------
array([[4, 4, 4, 4],[4, 4, 4, 4]])

创建单位矩阵

单位矩阵从左上角到右下角的对角线上的元素均为1,除此以外全都为0。任何矩阵与单位矩阵相乘都等于本身,而且单位矩阵因此独特性在高等数学中也有广泛应用。创建单位矩阵的两种方法:eye 和identity方法

eye方法

n1 = np.eye(3,dtype = int)
print(n1)
-----------------------------
array([[1, 0, 0],[0, 1, 0],[0, 0, 1]])

identity方法

n2 = np.identity(3,dtype = int)
print(n2)
-------------------
array([[1, 0, 0],[0, 1, 0],[0, 0, 1]])

linspace创建

linspace函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:

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

start:序列的起始值。

stop:序列的终止值,如果endpoint为true,该值包含于数列中。

num:要生成的等步长的样本数量,默认为50。

endpoint:该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。

retstep:如果为 True 时,生成的数组中会显示间距,反之不显示。

dtype:ndarray 的数据类型

#linspace创建---->等差数列
#格式:np.linspace(start,stop,num = 50,endpoint=True,retstep=Flase,dtype=None)
#endpoint=True时----->[start,end],  否则[start,end)x = np.linspace(1,10,5)   #表示1-10的范围内,等差出5个数字
print(x)
结果:array([ 1.  ,  3.25,  5.5 ,  7.75, 10.  ])y = np.linspace(1,10,5,endpoint=False)   #endpoint=False,最后一位取不到10,不能以10结尾
print(y)
结果:array([1. , 2.8, 4.6, 6.4, 8.2])#retstep显示等差间隔:
z = np.linspace(10,20,5,retstep=True)
print(z)
结果:(array([10. , 12.5, 15. , 17.5, 20. ]), 2.5)

logspace创建

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

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

start:序列的起始值为:base ** start

stop:序列的终止值为:base ** stop。如果endpoint为true,该值包含于数列中

num:要生成的等步长的样本数量,默认为50

endpoint:该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。

base:对数 log 的底数。

dtype:ndarray 的数据类型

#logspace创建----->等比数列
#格式:np.logspace(start,stop,num = 50,endpoint=True,base=10.0,dtype=None)x = np.logspace(0,9,10,base = 2)   #底数为2
print(x)
结果:array([  1.,   2.,   4.,   8.,  16.,  32.,  64., 128., 256., 512.])y = np.logspace(0,3,num = 4)   #默认底数为10
print(y)
结果:array([   1.,   10.,  100., 1000.])

总结

本篇介绍了一部分Numpy库中的方法,Numpy库很大很丰富,务必整理牢记,对接下来的学习很重要。

还有部分方法下期介绍哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1488686.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

python编程表白爱心代码,来自程序员的浪漫!

Python爱心表白代码 感觉的紫色要更加浪漫&#xff0c;其中的文字也是可以直接更改的&#xff0c;非常方便 <文末附带精品籽料> 改变爱心的颜色: 在源代码的13-15行位置&#xff0c;可以通过更改16进制颜色色值进行改变爱心的颜色&#xff0c;这里小编改了一点绿色&…

人生低谷来撸C#--018 匿名方法

1、概念 在 C# 中&#xff0c;匿名方法&#xff08;anonymous methods&#xff09;和 Lambda 表达式&#xff08;lambda expressions&#xff09;是两种非常有用的功能&#xff0c;它们允许你在不定义命名方法的情况下编写简短的、内联的代码块。 匿名方法&#xff08;Anonym…

驰骋低代码如何实现对实体的权限控制?

驰骋低代码平台通过一套精细的权限控制机制&#xff0c;实现了对实体&#xff08;如车辆、学生、员工、固定资产等&#xff09;的查询范围权限和操作权限的全面控制。这种权限控制不仅确保了数据的安全性和准确性&#xff0c;还提高了系统的灵活性和可定制性。以下是驰骋低代码…

SpringBoot:JWT+Interceptor 实现基本的登录验证

前置背景 Result类 &#xff1a; package com.example.day724test.Dao;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;//统一响应结果 NoArgsConstructor AllArgsConstructor Data public class Result<T> {private Intege…

Qt+OpenCascade开发笔记(一):occ的windows开发环境搭建(一):OpenCascade介绍、下载和安装过程

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140604141 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

【数据结构】手把手教你单链表(c语言)(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;数据结构 目录 前言 1.单链表的概念与结构 2.单链表的结构定义 3.单链表的实现 3.1 单链表的方法声明 3.2 单链表方法实现 3.2.1 打印链表 3.2.2 创建新…

机械学习—零基础学习日志(高数11——三角函数)

零基础为了学人工智能&#xff0c;真的开始复习高数 三角函数之所以比较困难&#xff0c;是因为过于抽象&#xff0c;距离生活太过遥远&#xff0c;这里搜集一些资料&#xff0c;帮助大家能加深对三角函数的理解。 三角函数作用——能测距离 三角函数从应用层&#xff0c;开…

C++ | Leetcode C++题解之第287题寻找重复数

题目&#xff1a; 题解&#xff1a; class Solution { public:int findDuplicate(vector<int>& nums) {int slow 0, fast 0;do {slow nums[slow];fast nums[nums[fast]];} while (slow ! fast);slow 0;while (slow ! fast) {slow nums[slow];fast nums[fast]…

RuoYi基于SpringBoot+Vue前后端分离的Java快速开发框架学习_2_登录

文章目录 一、登录1.生成验证码2.验证码作用1.大体流程2.代码层面(我们都是从前端开始看起) 一、登录 1.生成验证码 基本思路&#xff1a; 后端生成一个表达式&#xff0c;例如34?7,显而易见后面是答案截取出来题干和答案把题干11&#xff1f;变成图片&#xff0c;变成流&a…

【Qt】QLCDNumber和QProgressBar

目录 QLCDNumber 倒计时小程序 相关属性 QProgressBar 进度条小程序 相关设置 QLCDNumber QLCDNumber是Qt框架中用于显示数字或计数值的小部件。通常用于显示整数值&#xff0c;例如时钟、计时器、计数器等 常用属性 属性说明intValueQLCDNumber显示的初始值(int类型)va…

Python爬虫技术 第13节 HTML和CSS选择器

在爬虫技术中&#xff0c;解析和提取网页数据是核心部分。HTML 和 CSS 选择器被广泛用于定位网页中的特定元素。下面将详细介绍这些选择器如何在 Python 中使用&#xff0c;特别是在使用像 Beautiful Soup 或 Scrapy 这样的库时。 HTML 选择器 HTML 选择器基于 HTML 元素的属性…

uniapp手写滚动选择器

文章目录 效果展示HTML/Template部分&#xff1a;JavaScript部分&#xff1a;CSS部分&#xff1a;完整代码 没有符合项目要求的选择器 就手写了一个 效果展示 实现一个时间选择器的功能&#xff0c;可以选择小时和分钟&#xff1a; HTML/Template部分&#xff1a; <picker…

从食堂采购系统源码到成品:打造供应链采购管理平台实战详解

本篇文章&#xff0c;笔者将详细介绍如何从食堂采购系统的源码开始&#xff0c;逐步打造一个完备的供应链采购管理平台&#xff0c;帮助企业实现采购流程的智能化和高效化。 一、需求分析与规划 一般来说&#xff0c;食堂采购系统需要具备以下基本功能&#xff1a; 1.供应商…

【原创】java+swing+mysql理发店管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 开发背景&#xff1a; 随着社会经济的…

文件上传漏洞(ctfshow web151-161)

Web151 F12修改源代码 exts后面png改为php 这样就可以上传php的文件了 Web152&#xff1a; 考点&#xff1a;后端不能单一校验 就是要传图片格式&#xff0c;抓个包传个png的图片 然后bp抓包修改php后缀解析 然后放包 Web153-web156 在php代码中可以使用“{}”代替“[]” …

Nacos 高级详解:提升你的开发和部署效率

Nacos 高级 一 、服务集群 需求 服务提供者搭建集群 服务调用者&#xff0c;依次显示集群中各服务的信息 搭建 修改服务提供方的controller&#xff0c;打印服务端端口号 package com.czxy.controller;import org.springframework.web.bind.annotation.*;import javax.a…

Leetcode—240. 搜索二维矩阵 II【中等】

2024每日刷题&#xff08;149&#xff09; Leetcode—240. 搜索二维矩阵 II 实现代码 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int r 0;int c matrix[0].size() - 1;while(r < matrix.size() &&…

magento2 安装win环境和linux环境

win10 安装 安装前提&#xff0c;php,mysql,apach 或nginx 提前安装好 并且要php配置文件里&#xff0c;php.ini 把错误打开 display_errorsOn开始安装 检查环境 填写数据库信息 和ssl信息&#xff0c;如果ssl信息没有&#xff0c;则可以忽略 填写域名和后台地址&#xff0…

【NLP自然语言处理】为什么说BERT是bidirectional

首先&#xff0c;来看一下Transformer架构图&#xff1a; 我们知道&#xff0c;Bert设计时主要采用的是Transformer编码器部分&#xff0c;要论述Bert为啥是双向的&#xff0c;我想从编码器和解码器的注意力机制来阐述。 在看这篇博客前&#xff0c;需要对Transformer有一定的…

vite构建vue3项目hmr生效问题踩坑记录

vite构建vue3项目hmr生效问题踩坑记录 hmr的好处 以下是以表格形式呈现的前端开发中HMR&#xff08;热模块替换&#xff09;带来的好处&#xff1a; 好处描述提升开发效率允许开发者在不刷新整个页面的情况下实时更新修改的代码&#xff0c;减少等待时间保持应用状态在模块替…