Python——NumPy(第一讲)

文章目录

  • Numpy是什么?
    • numpy的安装
  • array创建数组
  • arange创建数组
  • 随机数创建
    • 随机数
    • 随机整数
    • 正太分布
  • ndarray 对象
  • zeros创建
  • ones创建
  • empty 创建
  • full()创建
  • 创建单位矩阵
  • linspace创建
  • logspace创建

Numpy是什么?

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

numpy的安装

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

pip install numpy

【示例】arange函数测试环境安装

import numpy as np
a=np.arange(10)
print(a)
# [0 1 2 3 4 5 6 7 8 9]

在上面的程序中只涉及numpy模块中的一个arange函数,该函数可以传入一个整数类型的参数n,函数返回值看着像一个列表,其实返回值类型是numpy.ndarray。这是Numpy中特有的数组类型。如果传入arange函数的参数值是n,那么arange函数会返回0到n-1的ndarray类型的数组

array创建数组

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

语法格式如下:

numpy.array(object, dtype = None, copy =True, order = None, subok = False, ndmin = 0)
名称描述
object数组或嵌套的数列
dtype数组元素的数据类型,可选
copy对象是否需要复制,可选
order对象是否需要复制,可选
subok默认返回一个与基类类型一致的数组
ndmin指定生成数组的最小维度

【示例】创建一维

b=np.array([1,2,3,4,5,6])
print(b)
print('b数组的维度:',b.shape)
# [1 2 3 4 5 6]
# b数组的维度: (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)
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生成 0 到 5 的数组

x=np.arange(0,6,dtype=int)
print(x)
# [0 1 2 3 4 5]

【示例】arange设置了起始值、终止值及步长

x=np.arange(10,20,2,dtype=float)
print(x)
# [10. 12. 14. 16. 18.]

【示例】arange创建二维数组

# array 内部的数组参数是齐次 数字个数要相同
b=np.array([np.arange(1,4),np.arange(4,7),np.arange(7,10)])
print(b)
print('b数组的维度:',b.shape)
'''
[[1 2 3][4 5 6][7 8 9]]
b数组的维度: (3, 3)
'''

随机数创建

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

函数说明
seed确定随机生成器种子
permutation返回一个序列的随机排列或返回一个随机排列的范围
shuffle对一个序列就地随机排列
rand产生均匀分布的样本值
randint该方法有三个参数low、high、size三个参数。默认high是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)。
random(size=None)该方法返回[0.0, 1.0)范围的随机数。
randn(d0,d1,…,dn)randn函数返回一个或一组样本,具有标准正态分布(期望为0,方差为1)。dn表格每个维度,返回值为指定维度的array

随机数

返回[0.0, 1.0)范围的随机数

numpy.random.random(size=None)
# 0.17933303422206437
# random 的范围是 0-1  size 表示数据长度维度
x=np.random.random(size=4)
y=np.random.random(size=(3,4))
'''
[0.45032275 0.31021312 0.19896381 0.99494102][[0.80596859 0.94110916 0.46217472 0.94750929][0.54060028 0.0122392  0.92880723 0.77930989][0.44973219 0.75000089 0.65675713 0.56710052]]'''

随机整数

# 该方法有三个参数low、high、size三个参数。默认high是None,如
# 果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)。
print(np.random.randint(5,10,size=(3,4)))
'''
[[5 8 9 8][9 5 6 9][7 7 8 8]]
'''

正太分布

numpy.random.randn(d0,d1,,dn)
# randn 正态分布 期望 0  方差 1
np.random.randn()
# 2.2092905841484445
np.random.randn(2,4)
'''
array([[ 0.76053265,  0.76429307, -0.92853041,  1.15234324],[ 1.73767927,  0.46951344, -1.41750813, -0.43827678]])
'''
#正太分布(高斯分布)loc:期望  scale:方差  size 形状
print(np.random.normal(loc=3,scale=4,size=(2,2,3)))
'''
[[[ 5.51447166  3.52809296  4.15695566][ 4.52925072 -1.88765851  2.85507012]][[-1.68197538  2.25529222  2.42014443][ 3.83676643  1.47955373  3.63706681]]]
'''

ndarray 对象

ndarray的属性

属性说明
.ndim秩,即轴的数量或维度的数量
.shapendarray对象的尺度,对于矩阵,n行m列
.sizendarray对象元素的个数,相当于.shape中n*m的值
.dtypendarray对象的元素类型
.itemsizendarray对象每个元素的大小,以字节为单位

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

x = np.random.randint(10,size=6)
y = np.random.randint(10,size=(3,4))
z = np.random.randn(3,4,5)
print("ndim属性",x.ndim,y.ndim,z.ndim)
print("shape属性",x.shape,y.shape,z.shape)
print("size属性",x.size,y.size,z.size)
print("dtype属性",x.dtype,y.dtype,z.dtype)
print("itemsize属性",x.itemsize,y.itemsize,z.itemsize)
'''
ndim属性 1 2 3
shape属性 (6,) (3, 4) (3, 4, 5)
size属性 6 12 60
dtype属性 int32 int32 float64
itemsize属性 4 4 8
'''

zeros创建

创建指定大小的数组,数组元素以 0 来填充

numpy.zeros(shape, dtype = float, order ='C')
x = np.zeros(5)
print(x)          # [0. 0. 0. 0. 0.]
# 设置类型为整数
y = np.zeros((5,), dtype=int)
print(y)       # [0 0 0 0 0]
z = np.zeros((2, 2))
print(z)  
'''
[[0. 0.][0. 0.]]
'''

zeros_like:根据传入的数组形状创建全为0的数组
【示例】zeros_like的使用

n3 = np.zeros_like(z)
'''
[[0. 0.][0. 0.]]
'''

ones创建

方法与zeros创建方法相同(不做示范)
创建指定大小的数组,数组元素以 1来填充

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

empty 创建

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

x=np.empty([3,2],dtype=int)
y = np.empty_like(x)
'''
[[25895968444448860 31525592532385860][31244169099083897 13792492908183662][29555336417116208   140720308486242]][[140721260162384 140721260200480][140721260200928 140721260061376][140721260200960 140721260004720]]
'''

【示例】empty创建数组的使用

# y输出随机的十个整数
y = np.empty(10, dtype=int)
print(y)
'''
[25895968444448860 22518393277644868 32932950239150181 3039969262495345432370017465139305 12666807751278697 30118247716159600 3237005612017264130681274979844188 30399692629672048]
'''
x = np.arange(5)
print(x)   # [0 1 2 3 4]
# 将x中的元素都加上2 再存放到y的前五个数中
print(np.add(2, x, out=y[:5]))   # [2 3 4 5 6]
print(y[:10])
'''
[                2                 3                 4                 56 12666807751278697 30118247716159600 3237005612017264130681274979844188 30399692629672048]
'''

full()创建

创建全为某个指定值的数组

full(shape,fill_value)

【示例】full的使用

a = np.full((2,2),3)
'''
[[3 3][3 3]]
'''

创建单位矩阵

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

np.eye(3,dtype=int)
np.identity(4,dtype=int)
'''
效果一样
[[1 0 0][0 1 0][0 0 1]][[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 时,生成的数组中会显示间距,反之不显示。
dtypendarray 的数据类型

【示例】linspace创建等差数列

x=np.linspace(1,10,10)
# [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]

【示例】linspace创建等差数列endpoint 设为 true

# endpoint=True 间隔 end-start/(num-1)
x=np.linspace(10,20,5,endpoint=True)
# [10.  12.5 15.  17.5 20. ]
# endpoint=False 间隔 end-start/num
x = np.linspace(1,5,num=5,endpoint=False)
# [1.  1.8 2.6 3.4 4.2]

【示例】linspace创建等差数列retstep=True

x=np.linspace(10,20,5,retstep=True)
# (array([10. , 12.5, 15. , 17.5, 20. ]), np.float64(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 的底数。
dtypendarray 的数据类型

【示例】logspace创建等比数列

x=np.logspace(0,9,10,base=2)
# [  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]
x = np.logspace(0,3,num=4)
# [   1.   10.  100. 1000.]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构(特殊二叉树-平衡二叉树)

平衡二叉树(AVL树) 前提一定是搜索二叉树,对于根节点的左右子树的高度差不能超过1,并且所有子树都要循序这个要求 如果一个搜索二叉树呈现或接近单支状,它的查找效率很低,很接近链表,因此如果能让它平衡时&#xff0c…

回望林徽因,给心怀梦想的女孩子以精神的力量。|于女生,影响你的命运的一个很重要的因素是将来的伴侣。

文章目录 引言I 《回望林徽因,给心怀梦想的女孩子以精神的力量。》怎样活出生命的价值和精彩?相爱的两个人,需要注意的地方是?普通日子的浪漫,藏在哪些细节里?一个女性最有魅力的时刻是?写作的美妙之处是什么?为什么说笑起来的样子很美?自由辽阔的心境,是什么样的感觉…

python中的fire和Linux shell中的参数传递

一、fire 安装 要使用 Python Fire 库,首先需要安装它。以下是安装步骤: 使用 pip 安装 可以通过 pip 直接安装 Python Fire: pip install fire 特性 自动生成命令行界面:将任何 Python 对象(函数、类、模块、字…

nodejs编译报错 集合

目录 一、使用命令编译typescript时报错,报错文件tsconfig.json 二、npm start运行后报错,could not find module 一、使用命令编译typescript时报错,报错文件tsconfig.json npx tsc 报错: Specified include paths were [&…

秋招突击——7/24——知识补充——JVM类加载机制

文章目录 引言类加载机制知识点复习类的生命周期1、加载2、连接——验证3、连接——准备4、连接——解析5、初始化 类加载器和类加载机制类加载器类加载机制——双亲委派模型 面试题整理1、类加载是什么2、类加载的过程是什么3、有哪些类加载器?4、双亲委派模型是什…

Redis一致性与分布式锁

Redis一致性 何为redis一致性 即在项目中,redis缓存中的数据要与数据库当中的数据保持一致。 那么这里,就会有小伙伴要问了,redis缓存中的数据不就是从数据库当中查询出来的吗?怎么会不一致呢? 笔者在这里解答一下…

Unite 上海 强势回归

​​​ 他回归了 Unite 大会是一年一度的 Unity 全球开发者盛会。今年,Unite 将于 7 月盛夏点亮上海外滩。此次盛会,我们将以“团结”为核心,凝聚全球 3000 多位 Unity 社区精英的力量,共同开启 Unity 技术的新纪元。 在这里&am…

UE学习笔记--干货满满!FString 的 Equals 和 == 源码深度探析

目录 前言FString 的 operatorESearchCaseStricmpBothAsciiLowerAsciiStricmp 结论Stricmp 代码验证整理思路 前言 最近大概写了如下代码 TArray<FString> TestArray; FString Z1 "Z1", z1 "z1"; TestArray.Emplace(Z1);if(TestArray.Contains(z…

代码随想录第十七天|动态规划(1)

目录 LeetCode 509. 斐波那契数列 LeetCode 70. 爬楼梯 LeetCode 746. 使用最小花费爬楼梯 LeetCode 62. 不同路径 LeetCode 63. 不同路径 II 总结 动态规划在算法课上学习过&#xff0c;看过了之后有一些熟悉感。&#xff08;虽然贪心算法也学过&#xff0c;但是不如动态…

样式迁移及代码

一、定义 1、使用卷积神经网络&#xff0c;自动将一个图像中的风格应用在另一图像之上&#xff0c;即风格迁移&#xff1b;两张输入图像&#xff1a;一张是内容图像&#xff0c;另一张是风格图像。 2、训练一些样本使得样本在一些cnn的特征上跟样式图片很相近&#xff0c;在一…

Java字符串与Unicode编码(码点、代码单元、基本多语言平面BMP、辅助平面、代理对)

Java字符串与Unicode编码 1. Unicode编码简介 Unicode是一个为世界上所有书写系统设计的字符编码标准。它旨在解决不同编码标准之间不兼容的问题&#xff0c;使得计算机能够处理和显示世界上几乎所有的字符。Unicode为每个字符分配了一个唯一的数字&#xff0c;称为“码点”&…

字典集合案例

1.统计字符 统计字符串中每个字符出现的次数 s l like summer very much #去掉空格 s s.replace(" ","") d dict() for i in s:if i in d:d[i] 1else:d[i] 1 for i in d:print(i,d[i]) 2.求不重复的随机数 #导入随机数 import random a int(input(&q…

自动化测试的艺术:Xcode中GUI测试的全面指南

自动化测试的艺术&#xff1a;Xcode中GUI测试的全面指南 在软件开发过程中&#xff0c;图形用户界面&#xff08;GUI&#xff09;测试是确保应用质量和用户体验的关键环节。Xcode&#xff0c;作为苹果的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供了一套强大…

智能疲劳驾驶检测:基于YOLO和深度学习的全流程实现

引言 疲劳驾驶是导致交通事故的重要原因之一。为了提高道路安全&#xff0c;及时检测和预警驾驶员的疲劳状态显得尤为重要。本文介绍了一种基于深度学习的疲劳驾驶检测系统。该系统利用YOLO模型&#xff08;YOLOv8/v7/v6/v5&#xff09;进行疲劳驾驶检测&#xff0c;并提供了详…

OD C卷 - 密码输入检测

密码输入检测 &#xff08;100&#xff09; 给定一个密码&#xff0c;‘<’ 表示删除前一个字符&#xff0c;输出最终得到的密码&#xff0c;并判断是否满足密码安全要求&#xff1a; 密码长度>8;至少包含一个大写字母&#xff1b;至少包含一个小写字母&#xff1b;至少…

探索若依(Ruoyi):开源的企业级后台管理系统解决方案

探索若依&#xff08;Ruoyi&#xff09;&#xff1a;开源的企业级后台管理系统解决方案 在现代企业管理中&#xff0c;拥有一个高效、稳定的后台管理系统是至关重要的。若依&#xff08;Ruoyi&#xff09;作为一款开源的企业级后台管理系统&#xff0c;为企业提供了丰富的功能…

SpringBoot中JSR303校验

JSR是 Java EE 的一种标准&#xff0c;用于基于注解的对象数据验证。在Spring Boot应用中&#xff0c;你可以通过添加注解直接在POJO类中声明验证规则。这样可以确保在使用这些对象进行操作之前&#xff0c;它们满足业务规则。个人认为非常有用的&#xff0c;因为它减少了代码中…

2.6基本算法之动态规划2989:糖果

描述 由于在维护世界和平的事务中做出巨大贡献&#xff0c;Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠券。在这一天&#xff0c;Dzx可以从糖果公司的N件产品中任意选择若干件带回家享用。糖果公司的N件产品每件都包含数量不同的糖果。Dzx希望他选择的产品包含的糖…

被问到MQ消息已丢失,该如何处理?

在分布式系统中&#xff0c;消息中间件&#xff08;如 RabbitMQ、RocketMQ、Kafka、Pulsar 等&#xff09;扮演着关键角色&#xff0c;用于解耦生产者和消费者&#xff0c;并确保数据传输的可靠性和顺序性。尽管我们通常会采取多种措施来防止消息丢失&#xff0c;如消息持久化、…

【Vue实战教程】之 Vue Router 路由详解

Vue Router路由 1 路由基础 1.1 什么是路由 用Vue.js创建的项目是单页面应用&#xff0c;如果想要在项目中模拟出来类似于页面跳转的效果&#xff0c;就要使用路由。其实&#xff0c;我们不能只从字面的意思来理解路由&#xff0c;从字面上来看&#xff0c;很容易把路由联想…