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 ...
随机推荐
- 基于rv1126 rkmeida 一路多出 原理
基于rv1126 rkmeida 一路多出的坑 首先说要的是介绍一下rkmedia 相关内容 RKMedia提供了一种媒体处理方案,可支持应用软件快速开发.RKMedia在各模块基础API上做进一 ...
- ABC326 A-F
vp on 2023.11.12 A.B:略. C:双指针或者二分. D:暴搜+剪枝,每一行的计算量最多是 $60$. E:期望相关.计算每个点的概率,乘上这个点的权值,并求和即可. F:meet i ...
- MarkDown常用语法Typora
一级标题:左右分别 # 二级标题:左右分别 ## 三级标题 四级标题 五级标题 六级标题 加粗:左右分别 ** 斜体:左右分别 * 斜体加粗:左右分别 *** 删除:左右分别 ~~ "> ...
- 哈希表(HashTable)
哈希表 哈希表:也叫做散列表.是根据关键字和值(Key-Value)直接进行访问的数据结构.也就是说,它通过关键字 key 和一个映射函数 Hash(key) 计算出对应的值 value,然后把键值对 ...
- Windows开发的瑞士军刀,NewSPYLite发布
宗旨:延续了SpyLite的方便易用,同时也丰富了更多的功能,更适合开发者使用. 在SpyLite的基础功能上,开发了更多人性化并且好用的功能,增强的信息的可读性,以及软件总体的可用性. New Sp ...
- 掌握 C++ 编译过程:面试中常见问题解析
C++是一种高级编程语言,但是计算机并不能直接理解它.因此,需要将C++代码翻译成计算机可以理解的机器语言.这个过程就是编译过程,是C++程序从源代码到可执行文件的转换过程,包括预处理.编译.汇编和链 ...
- 设置 BCompare 打开文件时的默认字符编码
每次比对 .h .cpp 文件,BCompare总是默认以西欧字符编码打开文件,导致中文都变成乱码了,还需要手动的修改文件字符编码,这样才能正常的显示.非常的不方便 然后我们就需要设置默认的字符编码, ...
- 数据库自增ID用完了会怎么样?
记一个数据库方面的面试题:数据库自增ID用完了会怎么样? MySQL中 int 类型是4个字节,如果是有符号,那就是 [ -2^31 , 2^31-1 ], 如果是无符号,那就是 [ -2^31 , ...
- HarmonyOS后台任务管理开发指南上线!
为什么要使用后台任务?开发过程中如何选择合适的后台任务?后台任务申请时存在哪些约束与限制? 针对开发者使用后台任务中的疑问,我们上线了概念更明确.逻辑结构更清晰的后台任务开发指南,包含具体的使用场 ...
- CTR预估系列模型漫谈
FM FM的主要内容 了解fm模型之前,需要先说一下lr带入一下场景.lr作为早期ctr预估里面的模型,其速度上有着无可比拟的优势,而偏偏ctr场景下伴随着有大量的离散特征,高维稀疏特征,这个很适合l ...