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 ...
随机推荐
- ZYNQ7000系列学习
ZYNQ7000-系列知识学习 一.ZYNQ7000简介 ZYNQ7000是xilinx推出的具有ARM内核的FPGA芯片,可用于常见SOC开发.基于此,通过学习ZYNQ7000的各种设置和开发,可以 ...
- Kingbase ES 自定义聚合函数和一次改写案例
文章概要: KES的SQL的语法暂时不兼容oracle的自定义聚合函数的创建语法和流程,但是可以使用KES已支持的语法改写. 本文整理和简单解析了自定义聚合函数的原理和解读了范例代码. 并根据客户代码 ...
- C++设计模式 - 解析器模式(Interpreter)
领域规则模式 在特定领域中,某些变化虽然频繁,但可以抽象为某种规则.这时候,结合特定领域,将问题抽象为语法规则,从而给出在该领域下的一般性解决方案. 典型模式 Interpreter Interpre ...
- 无法解析的外部符号 _main
就如提示错误一样,程序找不到入口. 解决方法:
- WPF实现树形表格控件(TreeListView)
前言 本文将探讨如何利用WPF框架实现树形表格控件,该控件不仅能够有效地展示复杂的层级数据,还能够提供丰富的个性化定制选项.我们将介绍如何使用WPF提供的控件.模板.布局.数据绑定等技术来构建这样一个 ...
- #博弈论#Poj 2505 A multiplication game
题目 给你一个整数\(n\),你从1开始乘,乘2-9之间的任意一个数. 最先得到大于等于\(n\)的数的人胜利.Stan先手Ollie后手. 那么,请问给你一个数\(n\),Stan和Ollie都足够 ...
- 使用OHOS SDK构建lua
参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/lua/lua.git ...
- 掌握 C++ 编译过程:面试中常见问题解析
C++是一种高级编程语言,但是计算机并不能直接理解它.因此,需要将C++代码翻译成计算机可以理解的机器语言.这个过程就是编译过程,是C++程序从源代码到可执行文件的转换过程,包括预处理.编译.汇编和链 ...
- 一文告诉你商业智能BI如何推动推动智慧物流发展
随着网络消费的不断发展,推动了物流等相关产业的迅速发展,另外无论是2B业务还是2C业务的生产制造企业,对物流的要求都越来越高,尤其体现在对物流全程透明可视化的需求.商业智能BI平台的引入,大大提高了物 ...
- 不常用的技能-【手动编译java类】
jdk版本:1.7 冒号分割jar包,1.8 分号分割jar包 javac -classpath fastjson-1.2.24.jar:jedis-2.9.0.jar Test.javajava - ...