第二十一天-NumPy

目录

什么是NumPy

NumPy使用

1.数组的创建

2.类型转换

3.赠删改查

4.数组运算

5.矩阵运算


什么是NumPy

1.NumPy操作的是多维数组,什么是纬度?

NumPy使用

1. 安装

pip install numpy

import numpy as np

2.官网:

中文官网:numpy.org.cn

1.数组的创建

1.创建一个一维数组:array

import numpy as np#创建一个一维数组
d1=np.array([1,2,3,4,5])
print(d1)
#查看size
print(d1.size)
#查看type
print(type(d1))
#查看数据维度
print(d1.ndim)

out:

[1 2 3 4 5]
5
<class 'numpy.ndarray'>
1

2.创建一个二维数组:arnge

#创建一个二维数组
d2=np.arange(15)
print(d2)
#增加行,列维度
d2=d2.reshape(3,5)
print(d2)

out:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

3.创建全为0或1的数组

# 创建全为0的数组
d3 = np.zeros(15)
d3 = d3.reshape(3, 5)
print(d3)d4 = np.ones(15)
d4 = d4.reshape(3, 5)
print(d4)

out

[[0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]]
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

4.empty,创建新数组,只分配内存空间,不填充任何值

d5 = np.empty(([1,2,3]))
print(d5)

2.类型转换

numpy会自动根据传入类型设置数据类型

1. 数组转np数组

# 数组转为np数组
data = [[1, 2, 3, 4], [5, 6, 7, 8]]
print(type(data))
d1 = np.array(data)
print(d1)
print(type(d1))

out:

<class 'list'>
[[1 2 3 4]
 [5 6 7 8]]
<class 'numpy.ndarray'>

2.dtype识别数据类型

d4 = np.ones(15)
d4 = d4.reshape(3, 5)
print(d4.dtype)

out:float64

3.创建时指定数据类型

d4 = np.arange(15,dtype=np.float64)
d4 = d4.reshape(3, 5)
print(d4)print(d4.dtype)

4.对ndarray进行数据类型转换,astype

data4.astype(np.float64)

3.赠删改查

1.索引

#一维数组索引获取数据
d1=np.arange(15)
print(d1)
print("获取第一个:",d1[0])
print("获取最后一个:",d1[-1])#二维数组
d2=np.arange(15).reshape(3,5)
print(d2)
print("获取第一行第一列,方法1:",d2[0,0])
print("获取第一行第一列,方法2:",d2[0][0])
print("获取倒数第一行第一列,方法1:",d2[-1,-1])
print("获取倒数第一行第一列,方法2:",d2[-1][-1])#三维数组
d2=np.arange(30).reshape(3,5,2)
print(d2)
print("获取第一行第一列第一个,方法1:",d2[0,0,0])
print("获取第一行第一列第一个,方法2:",d2[0][0][0])
print("获取倒数第一行第一列第一个,方法1:",d2[-1,-1,-1])
print("获取倒数第一行第一列第一个,方法2:",d2[-1][-1][-1])

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
获取第一个: 0
获取最后一个: 14
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
获取第一行第一列,方法1: 0
获取第一行第一列,方法2: 0
获取倒数第一行第一列,方法1: 14
获取倒数第一行第一列,方法2: 14
[[[ 0  1]
  [ 2  3]
  [ 4  5]
  [ 6  7]
  [ 8  9]]

 [[10 11]
  [12 13]
  [14 15]
  [16 17]
  [18 19]]

 [[20 21]
  [22 23]
  [24 25]
  [26 27]
  [28 29]]]
获取第一行第一列第一个,方法1: 0
获取第一行第一列第一个,方法2: 0
获取倒数第一行第一列第一个,方法1: 29
获取倒数第一行第一列第一个,方法2: 29

2.索引

#一维数组切片
d1=np.arange(15)
print("===",d1[0:3]) #截取包含起始下标到不包含结尾的数据
print("===",d1[:-1]) #截取全部#二维数组切片
d2=np.arange(15).reshape(3,5)
print("===",d2[0:1,:]) #行参数,列参数
print("===",d2[:,3:4]) #获取全部行,中3列的数据#三维数组
d3=np.arange(30).reshape(3,5,2)
print("===",d3)
print("===",d3[0:1,2:,:]) #行参数,列参数,三维参数#根据索引获取数据
#一维数组
print("===",d1[np.array([0,2,4])])print("===",d2[np.array([0,2]),np.array([1,2])])

=== [0 1 2]
=== [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13]
=== [[0 1 2 3 4]]
=== [[ 3]
 [ 8]
 [13]]
=== [[[ 0  1]
  [ 2  3]
  [ 4  5]
  [ 6  7]
  [ 8  9]]

 [[10 11]
  [12 13]
  [14 15]
  [16 17]
  [18 19]]

 [[20 21]
  [22 23]
  [24 25]
  [26 27]
  [28 29]]]
=== [[[4 5]
  [6 7]
  [8 9]]]
=== [0 2 4]
=== [ 1 12]

4.数组运算

1. 算数运算

import numpy as np#算数运算
a= np.random.random(10000)*10
b= np.random.random(10000)*10
#加法
print("加法:",np.add(a,b))
print("减法:",np.subtract(a,b))
print("除法:",np.divide(a,b))
print("乘法:",np.multiply(a,b))

加法: [13.06866571  6.26206256  7.44861655 ... 12.38302847 13.97542329
 11.69602862]
减法: [-1.04377832  4.84747125  2.0907946  ... -5.08931599 -0.78999914
  7.99437207]
除法: [0.85207689 7.85352893 1.78046438 ... 0.41744326 0.89299336 5.31934836]
乘法: [42.42513755  3.92886251 12.77761661 ... 31.85956422 48.67208937
 18.22177516]

2.数学函数

如:sin, 更多函数请看官方文档

#数学三角函数
ang=np.array([0,30,45,60,90,120,135,150,180])
rad=np.sin(ang*np.pi/180)
print(rad)

[0.00000000e+00 5.00000000e-01 7.07106781e-01 8.66025404e-01
 1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01
 1.22464680e-16]

3.统计函数

# 统计函数
d2 = np.array([1, 2, 3, 4, 5])
print("平均值mean:", np.mean(d2))
print("平均值average:", np.average(d2))
print("平均值,加权:", np.average(d2, weights=np.array([2, 2, 1, 1, 1])))
print("中位数median:", np.median(d2))
# 中位数,如未偶数,则取中间2个值进行除以2
print("中位数median,偶数:", np.median([1, 2, 3, 4, 5, 6]))
#方差 求每个数的离散值
print("方差,,var:", np.var(d2))
print("标准差,std:", np.std(d2))

平均值mean: 3.0
平均值average: 3.0
平均值,加权: 2.5714285714285716
中位数median: 3.0
中位数median,偶数: 3.5
方差,求每个数的离散值,var: 2.0
标准差,std: 1.4142135623730951
 

4.聚合运算

sum与np.sum性能对比,np.sum函数比内置统计函数快了10倍

#聚合运算
a = np.array([1, 2, 3, 4, 5])
print("内置统计函数sum:",sum(a))
print("numpay统计函数:sum:",np.sum(a))
print("累计乘prod:",np.prod(a))
print("最大值max:",np.max(a))
print("最小值min:",np.min(a))

内置统计函数sum: 15
numpay统计函数:sum: 15
累计乘prod: 120
最大值max: 5
最小值min: 1

5.筛选排序:

# 筛选、排序
a = np.array([1, 2, 3, 4, 5, 6])
# 筛选函数,注意返回的是下标
print("筛选:", np.where(a > 3))
print("排序,升序:", np.sort(a))

筛选: (array([3, 4, 5], dtype=int64),)
排序: [1 2 3 4 5 6]

5.矩阵运算

1.什么是矩阵,

  • 按照长方阵列(m行*n列)排列的数值集合
  • dot使用
a = np.arange(15).reshape(3, 5)
b = np.arange(15, 30).reshape(3, 5)
print("a:",a)
print("b:",b)
# 转置
a = a.T
print("a转置后",a)
print(np.dot(a, b))

a: [[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
b: [[15 16 17 18 19]
 [20 21 22 23 24]
 [25 26 27 28 29]]
a转置后 [[ 0  5 10]
 [ 1  6 11]
 [ 2  7 12]
 [ 3  8 13]
 [ 4  9 14]]
[[350 365 380 395 410]
 [410 428 446 464 482]
 [470 491 512 533 554]
 [530 554 578 602 626]
 [590 617 644 671 698]]

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

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

相关文章

蝙蝠避障:我生活中的一道光

盲人的世界&#xff0c;是无尽的黑暗。看不见光&#xff0c;看不见色彩&#xff0c;甚至看不见自己的手。但在这个黑暗的世界里&#xff0c;我找到了一个光明的出口&#xff1a;一款可以障碍物实时检测的名为蝙蝠避障的盲人软件。 这款软件就像是我的一双眼睛。它通过先进的激光…

HW干货集合 | HW面试题记录(1)

整理最近护网面试问的问题 前言 一开始会问问你在工作中负责的是什么工作&#xff08;如果在职&#xff09;&#xff0c;参与过哪些项目。还有些会问问你之前有没有护网的经历&#xff0c;如果没有的话一般都会被定到初级&#xff08;技术特牛的另说&#xff09;。下面就是一…

Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

&#x1f4c1; 前情提要&#xff1a; Springboot 整合 Elasticsearch&#xff08;三&#xff09;&#xff1a;使用RestHighLevelClient操作ES ① 目录 一、Springboot 整合 Elasticsearch 1、RestHighLevelClient API介绍 1.1、全查询 & 分页 & 排序 1.2、单条件查询…

【linux线程(一)】什么是线程?怎样操作线程?

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux线程 1. 前言2. 什么是线…

使用 Unity 创建 Apple Vision Pro 应用程序和内容的步骤

我们总结了使用 Unity 创建 Apple Vision Pro 应用程序和内容的步骤。 我们总结了使用 visonOS 模拟器检查操作的步骤。 基础知识是按照官方手册进行的,但是有一些部分是我遇到的,所以我附上了很多截图作为备忘录。 参考文章 Unity官方功能页面Unity官方博客Unity官方手册

使用cmd命令运行java

1.普通项目(不带lib文件夹) 1.在桌面上建一个名为com的文件夹&#xff0c;在文件夹中用记事本写两个类文件&#xff0c;后缀改为.java。两个类文件的内容如下图所示&#xff1a; 2.使用javac命令编译主函数&#xff0c;命令行为javac TestMain.java。结果可以看到自动生成了两…

Pygame教程07:键盘常量+键盘事件的2种捕捉方式

------------★Pygame系列教程★------------ Pygame教程01&#xff1a;初识pygame游戏模块 Pygame教程02&#xff1a;图片的加载缩放旋转显示操作 Pygame教程03&#xff1a;文本显示字体加载transform方法 Pygame教程04&#xff1a;draw方法绘制矩形、多边形、圆、椭圆、弧…

理论学习 BatchNorm2d

import torch import torch.nn as nn# With Learnable Parameters m nn.BatchNorm2d(100) # Without Learnable Parameters m nn.BatchNorm2d(100, affineFalse) input torch.randn(20, 100, 35, 45) output m(input)print(output) print(output.shape)这段代码展示了如何使…

2024蓝桥杯每日一题(二分)

一、第一题&#xff1a;教室 解题思路&#xff1a;二分差分 对天数进行二分&#xff0c;在ck函数中用差分方法优化多次区间累加。 【Python程序代码】 n,m map(int,input().split()) a [0] list(map(int,input().split())) d,s,t [0]*(m5),[0]*(m5),[0]*(m5) for…

你还可以通过“nrm”工具,来自由管理“npm”的镜像

你还可以通过“nrm”工具&#xff0c;来自由管理“npm”的镜像 nrm&#xff08;npm registry manager&#xff09;是npm的镜像管理工具&#xff0c;有时候国外的资源太慢&#xff0c;使用这个就可以快速地在npm源间切换。 1.安装nrm 在命令行执行命令&#xff0c;npm install…

Docker容器化技术(数据卷的管理)

数据卷 是一个可供容器使用的特殊目录&#xff0c;它将主机操作系统目录直接 映射进容器&#xff0c;类似于 Linux 中的 mount 行为 。 数据卷&#xff1a;可以提供很多有用的特性 数据卷可以在容器之间共事和重用&#xff0c;容器间传递数据将变得高效与方便&#xff1b;对数…

使用huggingface实现AltCLIP进行对齐语言和图像

目录 引言 使用例子 AltCLIPConfig 参数 示例 AltCLIPTextConfig 参数详解 示例 AltCLIPVisionConfig 参数详解 示例 AltCLIPProcessor 参数 方法 示例使用 AltCLIPModel 前向传播方法 forward 返回值 示例使用 AltCLIPTextModel 方法 forward 返回值 示…

如何选择合适的IP代理,如何为网络爬虫设置代理

目录 前言 1. 代理类型的选择 2. 代理速度 3. 代理稳定性 4. 代理的匿名性 5. 代理的地理位置 总结 前言 在进行网络爬虫任务时&#xff0c;为了避免被目标网站封禁IP或限制访问频率&#xff0c;我们通常会使用代理来隐藏真实的IP地址。选择合适的IP代理对于爬虫的成功…

内部应用解耦神器-Spring事件

大家好&#xff0c;我是程序员牛牛&#xff0c;《AI超级个体: ChatGPT与AIGC实战指南》的参与人&#xff0c;10年Java编程程序员。 1. 概述 在做业务开发过程中&#xff0c;有些复杂点的逻辑&#xff0c;可能代码逻辑会很冗长&#xff0c;举一个很简单的例子&#xff0c;如&am…

【vue.js】文档解读【day 3】 | 条件渲染

如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 文章目录 条件渲染前言&#xff1a;v-ifv-elsev-else-iftemplate中的v-ifv-showv-if vs v-show 条件渲染 前言&#xff1a; 在JavaScript中&#xff0c;我们知道条件控制语句可以控制程序的走向&#…

Failed to fetch dynamically imported module错误解决方案

工作需要&#xff0c;需要搬移某个功能代码到去年的分支&#xff0c;结果报了这个错 花了2个多小时排查&#xff0c;最后发现&#xff0c;是某个ts文件没有搬过来 吐血&#xff0c;怎么不直接提示这个文件不存在呢&#xff0c;让我研究了半天

【JAVA】HashMap扩容性能影响及优化策略

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在软件开发中&#xff0c;HashMap是一种常用的数据结构&#xff0c;但在处理大量数据时&#xff0c;其扩容…

基于支持向量机的的二分类预测

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接:基于支持向量机的的二分类预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88947565 SVM应用实例, 基于…

SpringBoot配置达梦数据库依赖(达梦8)

maven配置 <!-- 达梦数据库 --><dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version></dependency><dependency><groupId>com.alibaba&l…

【力扣 - 最大子数组和】

题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…