NumPy 数组创建方法与索引访问详解
NumPy 创建数组
NumPy 中的核心数据结构是 ndarray,它代表多维数组。NumPy 提供了多种方法来创建 ndarray 对象,包括:
使用 array() 函数
array() 函数是最常用的方法之一,它可以将 Python 列表、元组甚至其他数组转换为 ndarray 对象。
语法:
ndarray = np.array(data, dtype=dtype, order=order)
参数说明:
data:可以是 Python 列表、元组或其他数组。
dtype:指定数组元素的数据类型,默认为 float64。
order:指定数组元素的内存存储顺序,默认为 C 顺序(行优先)。
示例:
import numpy as np
# 创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
# 创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
# 创建三维数组
arr3 = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr1)
print(arr2)
print(arr3)
输出:
[1 2 3 4 5]
[[1 2 3]
[4 5 6]]
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
使用 zeros() 和 ones() 函数
zeros() 和 ones() 函数可以创建指定形状和数据类型的全零或全一数组。
语法:
ndarray = np.zeros(shape, dtype=dtype)
ndarray = np.ones(shape, dtype=dtype)
参数说明:
shape:指定数组的形状,可以是元组或列表。
dtype:指定数组元素的数据类型,默认为 float64。
示例:
import numpy as np
# 创建一个 3x4 的全零数组
arr1 = np.zeros((3, 4))
# 创建一个 2x3 的全一数组
arr2 = np.ones((2, 3))
print(arr1)
print(arr2)
输出:
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[[1. 1. 1.]
[1. 1. 1.]]
使用 empty() 函数
empty() 函数可以创建指定形状的空数组,但数组元素的值未定义。
语法:
ndarray = np.empty(shape, dtype=dtype)
参数说明:
shape:指定数组的形状,可以是元组或列表。
dtype:指定数组元素的数据类型,默认为 float64。
示例:
import numpy as np
# 创建一个 3x4 的空数组
arr = np.empty((3, 4))
print(arr)
输出:
[[nan nan nan nan]
[nan nan nan nan]
[nan nan nan nan]]
使用特殊函数
NumPy 还提供了一些特殊函数来创建特定类型的数组,例如:
arange():创建等差数列数组。
linspace():创建线性间隔的数组。
eye():创建单位矩阵。
diag():创建对角矩阵。
请参考 NumPy 文档了解有关这些函数的更多信息。
练习
创建以下数组:
一个包含 10 个元素的递增整数数组(从 0 到 9)。
一个包含 20 个元素的随机浮点数数组(范围为 0 到 1)。
一个 3x3 的单位矩阵。
请在评论中分享您的答案。
Sure, here is the requested Markdown formatted content:
NumPy 数组索引
NumPy 数组可用于表示多维数据。访问数组元素是 NumPy 中常见操作之一。
访问一维数组元素
NumPy 数组中的索引从 0 开始,这意味着第一个元素的索引为 0,第二个元素的索引为 1,依此类推。
要访问一维数组中的元素,可以使用方括号 [] 并指定元素的索引。
示例:
import numpy as np
# 创建一维数组
arr = np.array([1, 2, 3, 4, 5])
# 访问第一个元素
print(arr[0]) # 输出:1
# 访问第二个元素
print(arr[1]) # 输出:2
# 访问最后一个元素
print(arr[-1]) # 输出:5
访问二维数组元素
要访问二维数组中的元素,可以使用逗号分隔的两个索引:第一个索引表示行,第二个索引表示列。
示例:
import numpy as np
# 创建二维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 访问第一行第一个元素
print(arr[0, 0]) # 输出:1
# 访问第二行第三列元素
print(arr[1, 2]) # 输出:6
# 访问最后一个元素
print(arr[-1, -1]) # 输出:9
访问三维及更高维数组元素
对于三维及更高维数组,可以使用逗号分隔的多个索引来访问元素,每个索引表示相应维度的索引。
示例:
import numpy as np
# 创建三维数组
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
# 访问第一个数组的第二个数组的第三个元素
print(arr[0, 1, 2]) # 输出:6
负索引
NumPy 还支持负索引,从数组的末尾开始计数。
例如,要访问二维数组的最后一个元素,可以使用 arr[-1, -1]。
练习
创建一个 5x5 的二维数组 arr,并打印以下元素:
第一行的第一个元素
第二行的最后一个元素
第三列的第一个元素
第三个元素
在评论中分享您的代码和输出。
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
NumPy 数组创建方法与索引访问详解的更多相关文章
- numpy 数组创建例程
1 numpy.empty empty(shape[, dtype=float, order='C']) 创建指定 shape 和dtype 的未初始化数组 返回:ndarray. 说明:order ...
- NumPy数组创建例程
NumPy - 数组创建例程 新的ndarray对象可以通过任何下列数组创建例程或使用低级ndarray构造函数构造. numpy.empty 它创建指定形状和dtype的未初始化数组. 它使用以下构 ...
- NumPy 数组创建
章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基于数值区间创建数组 NumPy 数组切 ...
- ContentProvider数据访问详解
ContentProvider数据访问详解 Android官方指出的数据存储方式总共有五种:Shared Preferences.网络存储.文件存储.外储存储.SQLite,这些存储方式一般都只是在一 ...
- 0614MySQL的InnoDB索引原理详解
转自http://www.cnblogs.com/shijingxiang/articles/4743324.html MySQL的InnoDB索引原理详解 http://www.admin10000 ...
- numpy的文件存储.npy .npz 文件详解
Numpy能够读写磁盘上的文本数据或二进制数据. 将数组以二进制格式保存到磁盘 np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 ...
- Numpy数组对象的操作-索引机制、切片和迭代方法
前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...
- Swift3中数组创建方法
转载自:http://blog.csdn.net/bwf_erg/article/details/70858865 数组是由一组类型相同的元素构成的有序数据集合.数组中的集合元素是有 序的,而且可以重 ...
- MySQL索引优化详解
MySQL存储引擎简介 查看命令 a. 查看所使用的MySQL现在已提供什么存储引擎: mysql> show engines; b. 查看所使用的MySQL当前默认的存储引擎: mysql&g ...
- 加密方法与HTTPS 原理详解
一:加密方法: 1,对称加密 AES,3DES,DES等,适合做大量数据或数据文件的加解密. 2,非对称加密 如RSA,Rabin.公钥加密,私钥解密.对大数据量进行加解密时性能较低. 二:https ...
随机推荐
- CornerNet:经典keypoint-based方法,通过定位角点进行目标检测 | ECCV2018
论文提出了CornerNet,通过检测角点对的方式进行目标检测,与当前的SOTA检测模型有相当的性能.CornerNet借鉴人体姿态估计的方法,开创了目标检测领域的一个新框架,后面很多论文都基于Cor ...
- KingbaseES 垃圾回收原理以及如何预防膨胀更新
背景 KingbaseESV8R6支持snapshot too old 那么实际工作中,经常看到表又膨胀了,那么我们讨论一下导致对象膨胀的常见原因有哪些呢? 未开启autovacuum,对于未开启au ...
- 【已解决】java.lang.IllegalStateException:在提交响应后无法转发
出现这个问题的根本原因在于这一行代码: 解决办法就是把super这一行代码删掉. 这一行代码简单理解就是:HTTPServlet的doPost方法的默认实现返回HTTP 405状态码. 父类HttpS ...
- Socket.D v2.4.9 发布
Socket.D 是什么东东? 是基于"事件"和"语义消息""流"的网络应用协议.在微服务.移动应用.物联网等场景,可替代 http.web ...
- 关于pwn题的栈平衡中ret的作用
以nssctf里的where_is_my_shell为例 题目提供了一个system函数,和一个buf数组.数组的栈空间如图所示,这里不讨论怎么解题,只说明payload里的ret的作用. 假设没有r ...
- Matplotlib绘图设置---坐标轴刻度和标签设置
每个axes对象都有xaxis和yaxis属性,且xaxis和yaxis的每一个坐标轴都有主要刻度线/标签和次要刻度线/标签组成,标签位置通过一个Locator对象设置,标签格式通过一个Formatt ...
- Numpy随机数组(random)
numpy.random()模块补充了Python内置random模块的一些功能,用于高效/高速生成一些概率分布的样本数组数据. In [1]: import numpy as np In [2]: ...
- 如何用 Prometheus Operator 监控 K8s 集群外服务?
前言 前面系列文章中: Prometheus Operator 与 kube-prometheus 之一 - 简介 - 东风微鸣技术博客 (ewhisper.cn) 监控 Kubernetes 集群证 ...
- HDC2021技术分论坛:盘点分布式软总线数据传输技术中的黑科技
作者:houweibo,软总线首席技术专家:lidonghua,软总线技术专家 随着万物互联时代的到来,特别是大量媒体资源的涌入和使用,用户对传输的要求不断提高,怎样的传输技术才能满足未来的用户需求呢 ...
- docker 应用篇————具名挂载和匿名挂载[十三]
前言 简单整理一下具名挂载和匿名挂载. 正文 来看一下匿名挂载. 这里-v指定了容器内部的路径,但是没有指定容器外部的路径,那么挂载到了什么地方. 用inspect 查看一下. 挂载到这个位置了. 然 ...