numpy详解

Numpy

简介
Numpy(Numerical Python)是一个在Python领域做数值计算非常重要的库,
Pandas、Matplotlib、Statmodels、Scikit-learn和其它一些科学计算库都依赖Numpy
也就是说有时候你可能没有直接import numpy as np,但是却在背后有用到它

Numpy数组对比Python对象更节省空间、速度更快

print(sys.getsizeof(1))  # python中一个整数 28
print(np.dtype(int).itemsize)  # Numpy特别小 4


 性能也很重要

start_time = time.time()
a = np.arange(100000)
np.sum(a ** 2)
end_time = time.time()
print(end_time - start_time)  # 0.0014064311981201172



安装

pip install numpy



引入

import numpy as np

创建

一维数组

a = np.array([1, 2, 3, 4])
print(a[0])  # 取出单个元素 1
print(a[[0, -1]]) # 取出多个元素 [1 4]
print(a[[True, False, False, True]])# 利用布尔取出多个元素 [1 4]
print(a[1:4])  # 类似列表的切片操作[2 3 4]



多维数组

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)  # 形状 (2, 3)
print(a.ndim)  # 行数 2
print(a.size)  # 大小 6
print(a[1])  # 获取元素 [4 5 6]
print(a[0:2])  # 切片       


        

数据类型

查看数据类型

print(np.array([1, 2, 3, 4]).dtype)  # int32
print(np.array([0, .5, 1, 1.5, 2]).dtype)  # float64
print(np.array(['a', 'b', 'c']).dtype)  #
<U1【表示Unicode】,1代表最大一个字符
print(np.array(['adwadawd', 'b', 'c']).dtype)  #
<U8【表示Unicode】
print(np.array([{'name': 'jkw'}, .5, 1, 1.5, 2]).dtype)  # object



查看数据类型所占内存大小

print(np.dtype(np.int8).itemsize)  # 1
print(np.dtype(np.int32).itemsize)  # 4



指定数据类型

np.array([1, 2, 3, 4], dtype=float)
np.array([1, 2, 3, 4], dtype=np.int8)

特性

广播机制

a = np.arange(4)
print(a)  # [1 2 3 4]
print(a + 10)  # 广播操作 [10 11 12 13]
print(a * 10)  # 广播操作 [ 0 10 20 30]
b = np.array([10, 10, 10, 10])
print(a + b)  # 对应位置进行计算 [10 11 12 13]



布尔数组的用处

a = np.array([1, 2, 3, 4])
print(a[[True, False, False, True]])# 利用布尔取出多个元素 [1 4]
print(a > 2)  # 判断会返回布尔数组【若满足条件只有一个,那么直接会返回元素】 [False False  True  True]



运算符的使用

a = np.array([1, 2, 3, 4])
print(a[~(a > 2)])  # ~ 是not的意思 [1 2]
print(a[(a == 0) | (a == 1)])  # |是or的意思 [1]
print(a[(a <= 2) & (a % 2 == 0)])  # &是and的意思  [2]


        

方法

arange
语法格式为:range([start,] end [,step])
start:表示起始数字【可选,默认是0】
end:  结尾数字
step:  步长【可选,默认是1】

np.arange(10)
np.arange(5, 10)
np.arange(0, 1, .1)



数学函数

a = np.array([1, 2, 3, 4])
print(a.mean())  # 求平均值 2.5
x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(np.sin(x))
print(np.cos(x))
print(np.exp(x))
print(np.log(x))
print(np.sqrt(x))



随机数

# 参数可以使单个生成一维数组,也可以是2个,生成二维数组
print(np.random.random(size=2))  # 【0~1,可以取0】随机浮点数 [0.75730215 0.24639044]
print(np.random.normal(size=2))  # 标准正态分布取值【均值为0,方差为1】 [-1.39069266  0.25014434]
print(np.random.randint(50, 100, size=2))  # 在50-100 取值 [ 2 50]
print(np.random.rand(2, 4))  # 根据均匀分布取值
'''
[[0.75064719 0.72179169 0.85748488 0.92259082]
[0.46155837 0.83502102 0.10128444 0.27298604]]
'''



改变矩阵形状【扩维】

print(np.arange(10).reshape(2, 5))  # 改变形状 从一维变二维
'''[[0 1 2 3 4]
[5 6 7 8 9]]'''
print(np.arange(10).reshape((5, 2, 1)))  # 改变形状 从一维变三维


改变矩阵形状【缩维】

print(np.arange(10).reshape(2, 5).flatten())  # [0 1 2 3 4 5 6 7 8 9]



linspace

print(np.linspace(0, 1, 5))  # 0-1之间均匀取五个数 [0.   0.25 0.5  0.75 1.  ]
print(np.linspace(0, 1, 5, False))  # 0-1之间均匀取五个数,不包括末尾数



zeros, ones, empty

print(np.zeros(5))  # [0. 0. 0. 0. 0.]
print(np.zeros((3), dtype=np.int8))  # [0 0 0]
np.zeros((3,3))
print(np.ones(5)) # [1. 1. 1. 1. 1.]
print(np.ones((5), dtype=np.int8))  # [1 1 1 1 1]
np.ones((3,3))
print(np.empty(5))  # 仅仅开辟空间,里面数据不固定
np.empty((2,2))



identity, eye

print(np.identity(3))
print(np.eye(3, 3))
'''[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]'''
np.eye(8,4)
np.eye(8,4,k=1)
np.eye(8,4,k=-3)

数组的整合、切分、追加、插入

整合

a = np.array([
[1, 2, 3, 7],
[4, 5, 6, 7],
[7, 8, 9, 7]
])
b = np.array([
[10, 20, 30, 40],
[50, 60, 70, 80],
[70, 80, 10, 20],
])
c = np.concatenate((a, b))  # 整合
print(c.shape)  # (6, 4)
c2 = np.stack((a, b))  # 整合,创建一个新的维度
print(c2.shape)  # (2, 3, 4)



切分

a = np.array([[1, 2, 3, 7],[4, 5, 6, 7],[7, 8, 9, 7],[8, 5, 3, 1]])
print(np.split(a, 4))
print(np.split(a, 2))
print(np.hsplit(a, 4))
print(np.hsplit(a, 2))



追加, 插入

b = [10, 20, 30, 40]
a = np.append(a, b)
a = np.append(a, [b])  # 需要有同样的维度
a = np.append(a, [b], axis=0)  # 还需要选择维度
a = np.insert(a, 1, b, axis=0)  # 另一种做法

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

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

相关文章

Spring Bean的获取方式

参考https://juejin.cn/post/7251780545972994108?searchId2023091105493913AF7C1E3479BB943C80#heading-12 记录并补充 1.通过BeanFactoryAware package com.toryxu.demo1.beans;import org.springframework.beans.BeansException; import org.springframework.beans.facto…

postgresql-通用表达式

postgresql-通用表达式 入门案例简单CTE递归 CTE案例1案例2 入门案例 -- 通用表达式 with t(n) as (select 2) select * from t;简单CTE WITH cte_name (col1, col2, ...) AS (cte_query_definition ) sql_statement;WITH 表示定义 CTE&#xff0c;因此 CTE 也称为 WITH 查询…

【Unity】rotation和Quaternion学习笔记

1.rotation 赋值 Quaternion可以为transform.rotation 赋值 2. 从正轴面向原点&#xff0c;顺时针旋转&#xff0c;角度正增加 正x轴面向原点&#xff0c;顺时针旋转&#xff0c;z正轴往下&#xff0c;rotation的x正增加。 3.rotation和Quaternion的关系 1.查询 2.实践 旋转…

LVS DR模式负载均衡群集部署

目录 1 LVS-DR 模式的特点 1.1 数据包流向分析 1.2 DR 模式的特点 2 DR模式 LVS负载均衡群集部署 2.1 配置负载调度器 2.1.1 配置虚拟 IP 地址 2.1.2 调整 proc 响应参数 2.1.3 配置负载分配策略 2.2 部署共享存储 2.3 配置节点服务器 2.3.1 配置虚拟 IP 地址 2.3.2…

树形控件加自定义图标样式及指引线

记录一下留用&#xff0c;有错误请指正。 效果图如下&#xff1a; 自定义图标及指引线 代码&#xff1a; <div class"head-container" style"margin-left: -15px;"><el-tree icon-class"none"style"height:100%; overflow-y: h…

flutter 网络地址URL转file

方法1 import dart:io; import package:http/http.dart as http; import package:path/path.dart; import package:path_provider/path_provider.dart;Future<File> _fileFromImageUrl() async {final response await http.get(Uri.parse(https://example.com/xyz.jpg)…

滚动菜单 flutter

想实现这个功能&#xff1a; 下面的代码可以实现&#xff1a; import package:flutter/material.dart;void main() > runApp(MyApp());class MyApp extends StatelessWidget {static const String _title Flutter Code Sample;overrideWidget build(BuildContext context)…

vcruntime140_1.dll修复的方法大全,缺失vcruntime140_1.dll解决方法分享

vcruntime140_1.dll这个文件在电脑里属于挺重要的一个文件&#xff0c;一但它缺失了&#xff0c;那么很多程序都是运行不了的&#xff0c;今天我们就来讲解一下这个vcruntime140_1.dll修复以及它的一些作用和属性。 一.vcruntime140_1.dll的作用 vcruntime140_1.dll是Microso…

在MAC电脑上将NTFS格式移动硬盘转换为ExFAT格式

注意&#xff1a;转化之前先将移动硬盘中的内容进行备份 1、点击桌面上的【前往】&#xff0c;选择【实用工具】 2、在列表中选择【磁盘工具】 3、在左侧选中你的磁盘&#xff0c;点击右侧上方的【抹掉】,注意&#xff1a;将永久抹掉储存在上面的所有数据&#xff0c;因此需要…

Kubernetes入门 十五、高级调度

目录 定向调度nodeName&#xff08;不建议&#xff09;nodeSelector 亲和性调度nodeAffinitypodAffinity 和 podAntiAffinity 容忍和污点污点容忍 定向调度 定向调度&#xff0c;指的是利用在 Pod 上声明的 nodeName 或 nodeSelector &#xff0c;以此将 Pod 调度到期望的 Nod…

Alibaba(商品详情)API接口

为了进行电商平台 的API开发&#xff0c;首先我们需要做下面几件事情。 1&#xff09;开发者注册一个账号 2&#xff09;然后为每个alibaba应用注册一个应用程序键&#xff08;App Key) 。 3&#xff09;下载alibaba API的SDK并掌握基本的API基础知识和调用 4&#xff09;利…

计算机专业毕业设计项目推荐03-Wiki系统设计与实现(JavaSpring+Vue+Mysql)

Wiki系统设计与实现&#xff08;JavaSpringVueMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设…

大数据技术之Hadoop:提交MapReduce任务到YARN执行(八)

目录 一、前言 二、示例程序 2.1 提交wordcount示例程序 2.2 提交求圆周率示例程序 三、写在最后 一、前言 我们前面提到了MapReduce&#xff0c;也说了现在几乎没有人再写MapReduce代码了&#xff0c;因为它已经过时了。然而不写代码不意味着它没用&#xff0c;当下很火…

Spring中的JdbcTemplate的使用

在最近的一个工作中&#xff0c;为了简单方便我就是用了Spring自带的JdbcTemplate来访问数据库&#xff0c;我以为之前自己很熟练的掌握&#xff0c;后来才发现我太天真了&#xff0c;踩了很多坑。 基本方法 JdbcTemplate自带很多方法可以执行SQL语句,以下我主要列举&#xf…

103. 二叉树的锯齿形层序遍历

103. 二叉树的锯齿形层序遍历 题目-中等难度示例1. bfs 题目-中等难度 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09…

Elasticsearch:使用 ESRE 和生成式 AI 了解 TLS 日志错误

作者&#xff1a;DAVID HOPE 本博客介绍了 Elasticsearch 相关性引擎 (ESRE​​) 及其 Elastic Learned Sparse Encoder 功能的新颖应用&#xff0c;特别是在日志分析中。 最近发布的 Elasticsearch Relevance Engine™ (ESRE™) 包含一系列重要功能&#xff0c;可增强搜索能力…

Linux 中的 compress 命令及示例

compress命令用于减小文件大小。压缩后,该文件将添加.Z扩展名。文件权限仍将保持与使用压缩命令之前相同。该命令使用自适应 Lempel-Ziv 编码,并且忽略符号链接。该命令也是ncompress软件包的一部分,其中包含用于快速压缩和解压缩的实用程序。 注意:如果未指定文件,则标准…

OSPF路由计算

1、Router LSA LSA 链路状态通告&#xff0c;是OSPF进行路由计算的主要依据&#xff0c;在OSPF的LSU报文中携带&#xff0c;其头重要字段及解释&#xff1a; LS Type&#xff08;链路状态类型&#xff09;&#xff1a;指示本LSA的类型。 在域内、域间、域外…

数据治理-数据安全-基本概念

脆弱性 脆弱性是系统中容易遭受攻击的弱点或缺陷&#xff0c;本质上是组织防御中的漏洞。某些脆弱性称为漏洞敞口。例如&#xff1a;存在过期安全不定的网络计算机、不受可靠密码保护的网页&#xff0c;来自未知发件人的电子邮件附件的用户&#xff0c;不受技术命令保护的公司软…

goweb入门

创建gomod项目 go mod init web01新建main.go package mainimport ("fmt""net/http" )func handler(writer http.ResponseWriter, request *http.Request) {fmt.Fprintf(writer, "Hello World,%s!", request.URL.Path[1:]) } func main() {fmt…