高效数组处理的Numpy入门总结

news2024/12/30 2:39:46

NumPy是Python中一个重要的数学库,它提供了高效的数组操作和数学函数,是数据科学、机器学习、科学计算等领域的重要工具。下面是一个简单的NumPy学习教程,介绍了NumPy的基本用法和常用函数。

安装NumPy

在使用NumPy之前,需要先安装它。可以使用pip命令来安装NumPy,命令如下:

pip install numpy

导入NumPy

安装NumPy之后,可以使用import语句来导入NumPy库,命令如下:

import numpy as np

在上述代码中,我们使用import语句导入了NumPy库,并将它的别名设置为np。

创建NumPy数组

NumPy中最基本的数据结构是数组(array),可以使用NumPy库中的np.array()函数来创建数组。下面是一个创建一维数组和二维数组的例子:

import numpy as np

# 创建一维数组
a = np.array([1, 2, 3])
print(a)

# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)

输出结果为:

[1 2 3]
[[1 2 3]
 [4 5 6]]

在上述代码中,我们使用np.array()函数创建了一维数组和二维数组,并使用print语句输出了它们的值。

数组属性

NumPy数组有一些重要的属性,例如形状(shape)、维度(ndim)、元素类型(dtype)等。可以使用数组的属性来获取这些信息。下面是一个获取数组属性的例子:

import numpy as np

# 创建数组
a = np.array([[1, 2, 3], [4, 5, 6]])

# 获取数组属性
print("形状:", a.shape)
print("维度:", a.ndim)
print("元素类型:", a.dtype)

输出结果为:

形状: (2, 3)
维度: 2
元素类型: int64

在上述代码中,我们使用np.array()函数创建了一个二维数组,并使用数组的属性来获取它的形状、维度和元素类型。

数组索引和切片

可以使用索引和切片来访问NumPy数组中的元素。和Python中的列表一样,NumPy数组的索引从0开始,可以使用负数索引从数组末尾开始计数。下面是一个访问数组元素的例子:

import numpy as np

# 创建数组
a = np.array([[1, 2, 3], [4, 5, 6]])

# 访问数组元素
print(a[0, 1])
print(a[-1, -2])

# 切片访问数组元素
print(a[0, :])
print(a[:, 1])
print(a[0:2, 1:3])

输出结果为:

2
5
[1 2 3]
[2 5]
[[2 3]
 [5 6]]

在上述代码中,我们使用np.array()函数创建了一个二维数组,并使用索引和切片来访问它的元素。需要注意的是,使用冒号(:)可以访问整个行或列,例如a[:, 1]表示访问数组的第二列。

数组运算

NumPy数组支持各种数学运算,例如加减乘除、指数、对数、三角函数等。可以使用NumPy库中提供的函数来进行这些运算。下面是一个进行数组运算的例子:

import numpy as np

# 创建数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 数组运算
print("加法:", a + b)
print("减法:", a - b)
print("乘法:", a * b)
print("除法:", a / b)
print("指数:", np.exp(a))
print("对数:", np.log(a))
print("三角函数:", np.sin(a))

输出结果为:

加法: [5 7 9]
减法: [-3 -3 -3]
乘法: [ 4 10 18]
除法: [0.25 0.4  0.5 ]
指数: [ 2.71828183  7.3890561  20.08553692]
对数: [0.         0.69314718 1.09861229]
三角函数: [0.84147098 0.90929743 0.14112001]

在上述代码中,我们使用np.array()函数创建了两个一维数组,并使用NumPy库中的函数进行了各种数学运算。

广播

广播是NumPy中一种重要的机制,它允许不同形状的数组进行运算。当进行二元运算时,如果两个数组的形状不同,NumPy会自动将它们进行扩展,使它们的形状相同,然后再进行运算。下面是一个使用广播进行数组运算的例子:

import numpy as np

# 创建数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 广播运算
print("加法:", a + 1)
print("加法:", a + b.reshape(3, 1))

输出结果为:

加法: [2 3 4]
加法: [[5 6 7]
 [6 7 8]
 [7 8 9]]

在上述代码中,我们使用np.array()函数创建了两个一维数组,并使用广播机制进行了各种数学运算。需要注意的是,当进行a + 1的运算时,NumPy会自动将标量1扩展为长度为3的一维数组,然后再进行运算。当进行a + b.reshape(3, 1)的运算时,NumPy会自动将数组b的形状扩展为(3, 1),然后再进行运算。

其他常用函数

NumPy库中还有很多其他常用的函数,例如统计函数、线性代数函数、随机数函数等。下面是一个使用NumPy库中其他函数的例子:

import numpy as np

# 创建数组
a = np.array([[1, 2, 3], [4, 5, 6]])

# 统计函数
print("最大值:", np.max(a))
print("最小值:", np.min(a))
print("平均值:", np.mean(a))
print("标准差:", np.std(a))

# 线性代数函数
b = np.array([[4], [5], [6]])
print("矩阵乘法:", np.dot(a, b))

# 随机数函数
print("随机数:", np.random.rand(2, 3))

输出结果为:

最大值: 6
最小值: 1
平均值: 3.5
标准差: 1.707825127659933
矩阵乘法: [[32]
 [77]]
随机数: [[0.66256929 0.59886499 0.06279318]
 [0.44847655 0.28782597 0.83462457]]

在上述代码中,我们使用NumPy库中的统计函数、线性代数函数、随机数函数进行了各种操作。需要注意的是,np.dot()函数用于进行矩阵乘法,np.random.rand()函数用于生成指定形状的随机数数组。

一个简单示例:
在这里插入图片描述

根据二维向量D求解得到和d,可按照以下书写:

D = numpy.dot(V_numpy,F_numpy)
d = numpy.sum(D,axis=-1)#先把二维降为一维
d = numpy.sum(d,axis=-1)*0.5# 把一维降为零维

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

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

相关文章

ArkTS的状态管理机制(State)

什么是ArkTS的状态管理机制 声明式UI中,是以状态(State)来驱动视图更新的(View)。 状态是指驱动视图更新的数据(被装饰器标记的变量)。 视图是指UI描述渲染得到的用户页面。 互动事件可以改变状态的值。状态改变以后,又会触发事件,渲染页面。…

统信UOS使用4种方法重置用户密码

原文链接:统信UOS使用4种方法重置用户密码 hello,大家好啊,今天我要给大家介绍的是在统信UOS操作系统上使用4种不同方法来重置用户密码。我们都知道,在日常使用中,偶尔会忘记密码,尤其是在使用多个账户的情…

蓝牙协议栈学习笔记

蓝牙协议栈学习笔记 蓝牙简介 蓝牙工作在全球通用的 2.4GHz ISM(即工业、科学、医学)频段,使用 IEEE802.11 协议 蓝牙 4.0 是迄今为止第一个蓝牙综合协议规范,将三种规格集成在一起。其中最重要的变化就是 BLE(Blue…

淘宝订单API接口在电商行业中的应用与实现

一、引言 随着电商行业的快速发展,订单处理成为电商运营的核心环节。淘宝作为中国最大的电商平台之一,其订单API接口在电商行业中的应用越来越广泛。本文将详细介绍淘宝订单API接口在电商行业中的应用,并深入剖析相关的技术细节,…

前端设计模式之旅:命令模式

引言 使用命令模式,我们可以将执行特定任务的对象与调用该方法的对象解耦。 核心思想 命令模式的核心思想是将请求封装成一个对象,从而使请求的发起者和请求的执行者解耦。 这样,请求的发起者只需要知道如何创建命令对象并将其传递给请求者…

基于SSM架构的超市管理系统设计

基于SSM架构的超市管理系统设计 目录 基于SSM架构的超市管理系统设计 1 环境及工具1.1 IDEA软件安装1.2 JDK环境配置1.3 MySQL数据库安装1.3.1常规情况1.3.2非常规情况 1.4 Tomcat安装 2 部署与设计2.1 数据库信息创建2.2项目创建与部署 3 相关说明4 功能操作说明4.1 管理员操作…

ORA-600 [2662] “Block SCN is ahead of Current SCN“

ORA-600 [2662] "Block SCN is ahead of Current SCN" (Doc ID 28929.1)​编辑To Bottom Note: For additional ORA-600 related information please read Note:146580.1PURPOSE: This article discusses the internal error "ORA-600 [2662]"…

基于Java技术的会员制度管理的商品营销系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本商品营销系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

anolisos8.8安装显卡+CUDA工具+容器运行时支持(containerd/docker)+k8s部署GPU插件

anolisos8.8安装显卡及cuda工具 一、目录 1、测试环境 2、安装显卡驱动 3、安装cuda工具 4、配置容器运行时 5、K8S集群安装nvidia插件 二、测试环境 操作系统:Anolis OS 8.8 内核版本:5.10.134-13.an8.x86_64 显卡安装版本:525.147.05 c…

生物芯片市场分析:预计2029年将达到180亿美元

生物芯片(biochip或bioarray)是根据生物分子间特异相互作用的原理,将生化分析过程集成于芯片表面,从而实现对DNA、RNA、多肽、蛋白质以及其他生物成分的高通量快速检测。狭义的生物芯片概念是指通过不同方法将生物分子(寡核苷酸、cDNA、genomic DNA、多肽…

修改Docker0和容器的地址

修改Docker0和容器的地址 1. 需求 默认服务器安装完Docker-ce后会给docker0分配172.17.0.1/16地址. 公司新接入一个网段正好与172.17.0.1/16冲突,此时访问这台服务器的容器时就会发生网络不可达. 2. 解决方法 修改/etc/docker/daemon.json 加入一个自定义网段 vim /etc/d…

SpringBoot学习(一)——Maven安装

SpringBoot学习(一)——Maven安装 下载安装 Maven的下载页面:https://maven.apache.org/download.cgi SpringBoot学习(一)——Maven安装 下载安装 Maven的下载页面:https://maven.apache.org/download…

戏曲教育数字化思维?搜维尔科技助推中国戏曲数字人产业发展!

一场关于中国传统戏曲与数字媒体交汇的探讨之旅将于上周六完结,讲座活动旨在推动AI时代大背景下,利用元宇宙、数字人等创新技术焕发中国传统戏曲全新活力,我司做为校企合作优秀单位,受到王教授邀请,一同见证了中国戏曲…

解决 php 连接mysql数据库时报错:Fatal error: Class ‘mysqli’ not found in问题【更新23.12.12】

在使用php对mysql进行连接的过程中,出现了Fatal error: Uncaught Error: Class "mysqli" not found in的问题 解决方案 这个错误通常表示您的PHP代码中缺少MySQL扩展或者没有启用MySQL扩展。 我们首先确认一下PHP环境中已经安装了MySQL扩展。检查一下自己…

3分钟,掌握“曲面屏显示屏”

在3分钟内掌握“曲面屏显示屏”的概念和特点,可以按照以下步骤进行: 一、了解曲面屏显示屏的基本概念 曲面屏显示屏是一种采用柔性塑料的显示屏,主要通过OLED面板来实现。相比直面屏幕,曲面屏幕弹性更好,不易破碎。此外…

​Linux系列之yum安装​

yum是Linux系统的安装必备神器,简直不要太方便。但是新系统一般是不自带yum工具的,所以需要手动安装一下。 环境:Ubuntu sudo apt-get install yumsudo apt-get install rpm 环境:centos7 新建一个目录用来保存yum安装包 mk…

这个补丁摞补丁的RPC漏洞到底是怎么回事?

前段时间,微软Windows系统曝出的远程过程调用(RPC)漏洞可谓影响深远,Windows 7与后续的Windows客户端系统,以及Windows Server 2008与后续的Windows服务器系统均被波及。 但在微软发布补丁后,Akamai安全研…

uview1 的u-tabs组件在微信小程序中会出现横向滚动条

uview1 的u-tabs组件在微信小程序中会出现横向滚动条,真机才会生效,微信开发者工具没问题包括官方示例也会 原因:未屏蔽微信小程序的滚动条 解决办法:uview-ui中uview-ui/components/u-tabs/u-tabs.vue文件把h5屏蔽滚动条的条件编…

JVM虚拟机系统性学习-对象的创建流程及对象的访问定位

对象的创建流程与内存分配 对象创建流程如下: Java 中新创建的对象如何分配空间呢? new 的对象先放 Eden 区(如果是大对象,直接放入老年代)当 Eden 区满了之后,程序还需要创建对象,则垃圾回收…

处理获取当前日期---------------年月日//时分秒

当前时间,先分组匹配,以数组下标索引匹配定义的汉字进行替换 处理日期方法 /* 日期格式化 */ const formatTime function formatTime(time, template) {if (typeof time ! "string") {time new Date().toLocaleString(zh-CN, { hour12: fal…