当前位置: 首页 > news >正文

Python 教程之 Numpy(1)—— 什么是 Numpy?

Numpy是一个通用的数组处理包。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具。它是使用 Python 进行科学计算的基础包。
除了其明显的科学用途外,Numpy 还可以用作通用数据的高效多维容器。

Numpy 中的数组

Numpy 中的数组是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。在 Numpy 中,数组的维数称为数组的秩。给出数组沿每个维的大小的整数元组称为数组的形状。Numpy 中的数组类称为ndarray。Numpy 数组中的元素可以使用方括号访问,并且可以使用嵌套的 Python 列表进行初始化。

创建 Numpy 数组 Numpy
中的数组可以通过多种方式创建,具有不同数量的 Rank,定义数组的大小。数组也可以使用各种数据类型来创建,例如列表、元组等。结果数组的类型是从序列中元素的类型推导出来的。
注意: 数组的类型可以在创建数组时显式定义。

# 用于创建数组的 Python 程序
import numpy as np
 
# 创建 rank 1 数组
arr = np.array([1, 2, 3])
print("Array with Rank 1: \n",arr)
 
# 创建 rank 2 数组
arr = np.array([[1, 2, 3],
                [4, 5, 6]])
print("Array with Rank 2: \n", arr)
 
# 从元组创建数组
arr = np.array((1, 3, 2))
print("\nArray created using "
      "passed tuple:\n", arr)

输出:

Array with Rank 1: 
 [1 2 3]
Array with Rank 2: 
 [[1 2 3]
 [4 5 6]]

Array created using passed tuple:
 [1 3 2]

访问数组索引
在 numpy 数组中,索引或访问数组索引可以通过多种方式完成。要打印数组的范围,需要进行切片。数组切片是在新数组中定义一个范围,该数组用于打印原始数组中的一系列元素。由于切片数组包含原始数组的一系列元素,因此在切片数组的帮助下修改内容会修改原始数组内容。

# 用于演示 numpy 数组中的索引的 Python 程序
import numpy as np
 
# 初始数组
arr = np.array([[-1, 2, 0, 4],
                [4, -0.5, 6, 0],
                [2.6, 0, 7, 8],
                [3, -7, 4, 2.0]])
print("Initial Array: ")
print(arr)
 
# 使用切片方法打印一系列数组
sliced_arr = arr[:2, ::2]
print ("Array with first 2 rows and"
    " alternate columns(0 and 2):\n", sliced_arr)
 
# 以特定索引打印元素
Index_arr = arr[[1, 1, 0, 3], 
                [3, 2, 1, 0]]
print ("\nElements at indices (1, 3), "
    "(1, 2), (0, 1), (3, 0):\n", Index_arr)

输出:

Initial Array: 
[[-1.   2.   0.   4. ]
 [ 4.  -0.5  6.   0. ]
 [ 2.6  0.   7.   8. ]
 [ 3.  -7.   4.   2. ]]
Array with first 2 rows and alternate columns(0 and 2):
 [[-1.  0.]
 [ 4.  6.]]

Elements at indices (1, 3), (1, 2), (0, 1), (3, 0):
 [ 0. 54.  2.  3.]

基本数组操作
在 numpy 中,数组允许对特定数组或数组组合执行广泛的操作。这些运算包括一些基本的数学运算以及一元和二元运算。

# 演示单个数组的基本操作的 Python 程序
import numpy as np
 
# 定义数组 1
a = np.array([[1, 2],
              [3, 4]])
 
# 定义数组 2
b = np.array([[4, 3],
              [2, 1]])
               
# 每个元素加 1
print ("Adding 1 to every element:", a + 1)
 
# 从每个元素中减去 2
print ("\nSubtracting 2 from each element:", b - 2)
 
# 数组元素的总和执行一元运算
print ("\nSum of all array "
       "elements: ", a.sum())
 
# 添加两个数组执行二元运算
print ("\nArray sum:\n", a + b)

输出:

Adding 1 to every element:
 [[2 3]
 [4 5]]

Subtracting 2 from each element:
 [[ 2  1]
 [ 0 -1]]

Sum of all array elements:  10

Array sum:
 [[5 5]
 [5 5]]

Numpy 中的数据类型

每个 Numpy 数组都是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。每个 ndarray 都有一个关联的数据类型 (dtype) 对象。此数据类型对象 (dtype) 提供有关数组布局的信息。ndarray 的值存储在缓冲区中,可以将其视为可以由 dtype 对象解释的连续内存字节块。Numpy 提供了大量可用于构造数组的数值数据类型。在创建数组时,Numpy 会尝试猜测数据类型,但构造数组的函数通常还包含一个可选参数来显式指定数据类型。

构造数据类型对象
在 Numpy 中,除非需要特定的数据类型,否则不需要定义数组的数据类型。Numpy 尝试猜测未在构造函数中预定义的数组的数据类型。

# Python 程序创建数据类型对象
import numpy as np
 
# Numpy 猜测的整数数据类型
x = np.array([1, 2])  
print("Integer Datatype: ")
print(x.dtype)         
 
# Numpy 猜测的浮点数据类型
x = np.array([1.0, 2.0]) 
print("\nFloat Datatype: ")
print(x.dtype)  
 
# 强制数据类型
x = np.array([1, 2], dtype = np.int64)   
print("\nForcing a Datatype: ")
print(x.dtype)

输出:

Integer Datatype: 
int64

Float Datatype: 
float64

Forcing a Datatype: 
int64

DataType 数组上的数学运算
在 Numpy 数组中,基本的数学运算是在数组上按元素执行的。这些操作既作为运算符重载应用,也作为函数应用。Numpy 中提供了许多有用的函数来对数组执行计算,例如sum:用于添加数组元素,T:用于元素的转置等。

# Python 程序创建数据类型对象
import numpy as np
 
# 第一个数组
arr1 = np.array([[4, 7], [2, 6]], 
                 dtype = np.float64)
                  
# 第二个数组
arr2 = np.array([[3, 6], [2, 8]], 
                 dtype = np.float64) 
 
# 两个数组的加法
Sum = np.add(arr1, arr2)
print("Addition of Two Arrays: ")
print(Sum)
 
# 使用预定义的 sum 方法添加所有 Array 元素
Sum1 = np.sum(arr1)
print("\nAddition of Array elements: ")
print(Sum1)
 
# 数组的平方根
Sqrt = np.sqrt(arr1)
print("\nSquare root of Array1 elements: ")
print(Sqrt)
 
# 使用内置函数“T”对数组进行转置
Trans_arr = arr1.T
print("\nTranspose of Array: ")
print(Trans_arr)

输出:

Addition of Two Arrays: 
[[ 7. 13.]
 [ 4. 14.]]

Addition of Array elements: 
19.0

Square root of Array1 elements: 
[[2.         2.64575131]
 [1.41421356 2.44948974]]

Transpose of Array: 
[[4. 2.]
 [7. 6.]]

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,

关注与私信博主(08)学习更多Python知识与技巧,课件,源码,安装包,还有最新大厂面试资料等等等
咱们下期见。

收藏 等于白嫖,点赞才是真情。
 

相关文章:

  • $refs 、$nextTic、动态组件、name的使用
  • C语言实现简单通讯录,malloc,calloc,realloc,free动态内存分配的学习。
  • 【新人报到】【学习笔记】Python编程——入门
  • 【金融】中国vix、skew指数的Python实现
  • 外汇天眼:英镑暴跌英国国债暴跌 英国新政府宣布激进的减税促经济计划
  • 基于React的富文本编辑器——Braft Editor使用
  • vue项目docker打包通过k8s
  • 论文教程之阅读科学论文11步法,详细介绍了每个部分的关注点
  • [云原生] [kubernetes] 基于K8S安装kubesphere
  • docker部署服务初体验
  • 每日学一个设计模式23——解释器模式
  • C. Minimum Notation #823 div2
  • Python 教程之 Numpy(2)—— 数组
  • 【踩坑】在linux服务器上配置mysql并开放3306端口
  • JAVA基础(四十九)——自定义泛型
  • 分享一款快速APP功能测试工具
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Java精华积累:初学者都应该搞懂的问题
  • Laravel 中的一个后期静态绑定
  • Swoft 源码剖析 - 代码自动更新机制
  • 坑!为什么View.startAnimation不起作用?
  • 聊聊hikari连接池的leakDetectionThreshold
  • 七牛云假注销小指南
  • 在Docker Swarm上部署Apache Storm:第1部分
  • Nginx实现动静分离
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​虚拟化系列介绍(十)
  • # Maven错误Error executing Maven
  • #define用法
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • $.ajax()
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (pojstep1.1.2)2654(直叙式模拟)
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)插入排序
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Scala的“=”符号简介
  • (转)Sublime Text3配置Lua运行环境
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net FrameWork简介,数组,枚举
  • .net 简单实现MD5
  • .net 微服务 服务保护 自动重试 Polly
  • .Net多线程总结
  • .Net各种迷惑命名解释
  • .net经典笔试题
  • @FeignClient注解,fallback和fallbackFactory
  • [20160807][系统设计的三次迭代]
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured