NumPy数组基础:创建与访问详解

简介: 【4月更文挑战第17天】NumPy是Python科学计算的核心库,用于处理多维数组和矩阵。本文详述了NumPy数组的创建与访问:使用`numpy.array()`从列表或元组创建数组;通过`numpy.zeros()`, `numpy.ones()`, `numpy.empty()`创建指定形状的数组;利用`numpy.arange()`和`numpy.linspace()`生成特定数值范围的数组。此外,还介绍了访问数组元素的方法,包括索引、切片、布尔索引以及使用`numpy.where()`函数定位满足条件的元素。掌握这些技能将有助于高效地进行数据分析和科学计算。

NumPy(Numerical Python)是Python中用于处理大型多维数组和矩阵的库,它提供了大量的数学函数来操作这些数组。NumPy是数据分析、机器学习和其他科学计算任务中不可或缺的工具。本文将详细介绍NumPy数组的基本创建和访问方法。

一、NumPy数组的创建

1. 使用numpy.array()函数创建数组

NumPy提供了numpy.array()函数来创建数组。这个函数可以接受任何序列类型的对象,例如列表、元组等,并将其转换为NumPy数组。

import numpy as np

# 从列表创建数组
list_data = [1, 2, 3, 4, 5]
array_from_list = np.array(list_data)
print(array_from_list)  # 输出:[1 2 3 4 5]

# 从元组创建数组
tuple_data = (1, 2, 3, 4, 5)
array_from_tuple = np.array(tuple_data)
print(array_from_tuple)  # 输出:[1 2 3 4 5]

2. 创建指定形状的数组

你可以使用numpy.zeros(), numpy.ones(), numpy.empty()等函数来创建具有指定形状和类型的数组。

# 创建一个全为0的5x3数组
zeros_array = np.zeros((5, 3))
print(zeros_array)

# 创建一个全为1的3x4数组
ones_array = np.ones((3, 4))
print(ones_array)

# 创建一个未初始化的2x2数组
empty_array = np.empty((2, 2))
print(empty_array)

3. 使用numpy.arange()numpy.linspace()创建数组

numpy.arange()函数类似于Python的内置range()函数,但返回的是数组。而numpy.linspace()函数用于在指定的间隔内返回均匀间隔的数字。

# 使用arange创建数组
arange_array = np.arange(0, 10, 2)  # 从0开始,到10结束(不包含),步长为2
print(arange_array)  # 输出:[0 2 4 6 8]

# 使用linspace创建数组
linspace_array = np.linspace(0, 10, 5)  # 从0开始,到10结束,总共生成5个数
print(linspace_array)  # 输出:[ 0.  2.5  5.  7.5 10. ]

二、NumPy数组的访问

1. 使用索引访问数组元素

你可以使用Python的索引语法来访问NumPy数组的元素。在NumPy中,索引是从0开始的。

# 创建一个2D数组
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(array_2d)

# 访问特定元素
element = array_2d[1, 2]  # 访问第2行第3列的元素
print(element)  # 输出:6

2. 使用切片访问数组的子集

NumPy支持Python的切片语法,你可以使用切片来访问数组的子集。

# 使用切片访问数组的行和列
row = array_2d[1, :]  # 访问第2行的所有元素
print(row)  # 输出:[4 5 6]

col = array_2d[:, 1]  # 访问所有行的第2列的元素
print(col)  # 输出:[2 5 8]

# 使用切片访问数组的子集
subset = array_2d[1:3, 1:3]  # 访问第2行到第3行(不包含第3行),第2列到第3列(不包含第3列)的元素
print(subset)
# 输出:
# [[5 6]
#  [8 9]]

3. 使用布尔索引访问数组

你还可以使用布尔数组作为索引来访问NumPy数组的元素。

# 创建一个布尔数组作为索引
bool_index = array_2d > 5
print(bool_index)
# 输出:
# [[False False FalseFalse]
#  [False  True  True]
#  [ True  True  True]]

# 使用布尔索引访问大于5的元素
greater_than_five = array_2d[bool_index]
print(greater_than_five)
# 输出:[6 7 8 9]

在这个例子中,我们首先创建了一个布尔数组bool_index,它的形状和array_2d相同,并且每个元素都是根据array_2d中对应元素是否大于5来确定的。然后,我们使用这个布尔数组作为索引来访问array_2d中所有大于5的元素。

4. 使用numpy.where()函数访问满足条件的元素

numpy.where()函数可以根据给定的条件返回数组中满足条件的元素的索引。

# 使用numpy.where()找到数组中等于特定值的元素的索引
indices = np.where(array_2d == 5)
print(indices)
# 输出:(array([1]), array([1]))

# 根据索引访问对应的元素
element = array_2d[indices]
print(element)
# 输出:[5]

在这个例子中,np.where(array_2d == 5)返回了一个元组,其中包含两个数组,分别表示满足条件的元素的行索引和列索引。然后,我们使用这些索引来访问对应的元素。

总结

NumPy数组是科学计算和数据分析中非常重要的数据结构。本文介绍了NumPy数组的基本创建方法,包括使用numpy.array()函数、创建指定形状的数组以及使用numpy.arange()numpy.linspace()函数。同时,也详细讲解了如何使用索引、切片、布尔索引和numpy.where()函数来访问NumPy数组的元素。通过掌握这些基础知识,你将能够更有效地使用NumPy进行数据处理和分析。

相关文章
|
4月前
|
存储 索引 Python
Python 数组和列表:创建、访问、添加和删除数组元素
Python 没有内置支持数组,但可以使用 Python 列表来代替。
41 0
|
7月前
|
存储 Python
【numpy简介、入门、数组创建】
【numpy简介、入门、数组创建】
|
Python
numpy重新学习系列(8)---如何用np.empty创建一个未初始化的array
numpy重新学习系列(8)---如何用np.empty创建一个未初始化的array
54 0
numpy重新学习系列(8)---如何用np.empty创建一个未初始化的array
|
Python
numpy重新学习系列(6)---如何用np.ones创建一个新的array,里面元素是1
numpy重新学习系列(6)---如何用np.ones创建一个新的array,里面元素是1
47 0
|
Python
numpy重新学习系列(9)---如何用np.empty_like创建一个新的和原来array形状一样的,但是未初始化的array
numpy重新学习系列(9)---如何用np.empty_like创建一个新的和原来array形状一样的,但是未初始化的array
90 0
numpy重新学习系列(9)---如何用np.empty_like创建一个新的和原来array形状一样的,但是未初始化的array
|
Python
numpy重新学习系列(3)---如何创建一个array-四种从其他形式转化成array的方法
numpy重新学习系列(3)---如何创建一个array-四种从其他形式转化成array的方法
109 0
|
Python
Numpy数组——1.数组的创建
Numpy数组——1.数组的创建
171 0
|
存储 数据可视化 数据挖掘
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
162 0
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
|
存储 Python
Python学习笔记第三十三天(NumPy 从已有的数组创建数组)
Python学习笔记第三十一天讲解NumPy 从已有的数组创建数组、numpy.asarray、numpy.frombuffer、numpy.fromiter的用法。
79 0
Python学习笔记第三十三天(NumPy 从已有的数组创建数组)
|
存储 人工智能 算法
Numpy 创建数组序列|学习笔记
快速学习 Numpy 创建数组序列
164 0

热门文章

最新文章