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 ...
随机推荐
- DW:优化目标检测训练过程,更全面的正负权重计算 | CVPR 2022
论文提出自适应的label assignment方法DW,打破了以往耦合加权的惯例.根据不同角度的一致性和非一致性指标,动态地为anchor分配独立的pos权重和neg权重,可以更全面地监督训练.此外 ...
- python---nltk工具包安装
先在pycharm里安装nltk cmd进入Python输入 import nltk nltk.download()如果下载失败在github上下载语料库:https://github.com/nlt ...
- Mysql Order 排序的时候占用很长时间解决思路
MySQL中的连表查询(JOIN)在进行ORDER BY排序时可能会变得很慢,尤其是当处理大量数据时.以下是一些优化策略,可以帮助减少排序操作的时间: 索引优化: 确保参与排序的列上有索引.如果排序的 ...
- [HAOI2007,P2216,BZOJ1047]理想的正方形单调队列解法
题目描述 有一个 \(a \times b\) 的整数组成的矩阵,现请你从中找出一个 \(n \times n\) 的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入格式 第一行为 \( ...
- Health Kit申请验证有问题?解决方案全解析
在接入Health Kit的过程中,应用上线前需要完成申请验证环节,获得正式的运动健康权限. 我们贴心整理了申请验证被驳回的高频问题,您可以在申请前阅读以下内容,避免在您的申请材料中出现下述问题影响审 ...
- HMS Core上新啦!
HMS Core上新啦!分析服务营销分析报告全新上线:运动健康服务支持目标场景事件订阅:音频编辑服务提供专业的三维声音频编辑与渲染能力,更多HMS Core能力可点击网页链接了解. 了解更多详情> ...
- c# assembly.GetManifestResourceStream找不到路径
前言 最近发现一个问题,用assembly.GetManifestResourceStream去找资源路径xml的时候,发现找不到,然后有些xml资源又可以找到,这时候有两种思维来思考. 正文 第一种 ...
- node 父子进程传递对象
背景 node的父子进程中可以传递这是肯定的,但是传递对象,这是一个稀奇的地方. code 发送 server 对象 sendHandle 参数可用于将一个 TCP server 对象句柄传给子进程, ...
- Python阿里云消息推送调用API
很多公司测试APP推送时候,应该也是很头疼:推送环境:测试.正式,稍不注意就把测试的push到正式上,导致所有用户都收到 例子很多: 其实阿里.极光都有推送Api,直接调用API就ok,特别是有的公司 ...
- 这些Git事故灾难, 你经历过几个?
前言 关于Git, 相信大家最常用的就是pull和push. 但随着协作规模的提升, 遇到的问题也会越来越多. 本篇文章并不科普一些命令的详细用法, 更多的是分享在工作中遇到的Git场景问题以及踩过的 ...