Python Numpy基础:数组的创建与基本属性

2024-08-14 18:34:35 浏览数 (2)

在科学计算和数据分析领域,Python的Numpy库是一个不可或缺的工具。它提供了强大的多维数组对象,以及丰富的函数库,能够高效地处理大规模数据。本篇文章将详细介绍Numpy数组的创建方式与基本属性,帮助你更好地掌握这一基础知识,为深入学习和应用Numpy打下坚实的基础。

Numpy数组简介

Numpy数组是Numpy库中最核心的数据结构,称为ndarray(N-dimensional array)。与Python的列表相比,Numpy数组具有更高的效率,特别是在需要对大规模数据进行数学运算时,Numpy的优势尤为明显。

Numpy数组可以是多维的,这意味着它可以表示从一维向量到高维矩阵的所有数据形式。每个数组都有一个shape属性,表示其形状(即每个维度的大小),以及一个dtype属性,表示数组元素的数据类型。

创建Numpy数组

Numpy提供了多种方法来创建数组,根据需求的不同,可以选择不同的创建方式。

从Python列表或元组创建数组

最基本的创建数组的方法是将Python的列表或元组转换为Numpy数组。这是通过np.array()函数来实现的。

从列表创建一维数组

代码语言:javascript复制
import numpy as np

# 从列表创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print("一维数组:", arr1)

输出结果:

代码语言:javascript复制
一维数组: [1 2 3 4 5]

在这个示例中,使用一个简单的Python列表创建了一个一维Numpy数组。

从嵌套列表创建二维数组

代码语言:javascript复制
# 从嵌套列表创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:n", arr2)

输出结果:

代码语言:javascript复制
二维数组:
 [[1 2 3]
 [4 5 6]]

这个示例展示了如何通过嵌套列表创建一个二维数组。

使用内置函数创建特殊数组

Numpy提供了许多内置函数,可以方便地创建特殊的数组,例如全零数组、全一数组、单位矩阵、随机数组等。

创建全零数组和全一数组

代码语言:javascript复制
# 创建一个3x3的全零数组
zeros_array = np.zeros((3, 3))
print("全零数组:n", zeros_array)

# 创建一个2x4的全一数组
ones_array = np.ones((2, 4))
print("全一数组:n", ones_array)

输出结果:

代码语言:javascript复制
全零数组:
 [[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

全一数组:
 [[1. 1. 1. 1.]
 [1. 1. 1. 1.]]

通过np.zeros()np.ones()函数,可以轻松创建指定形状的全零或全一数组。

创建单位矩阵和随机数组

代码语言:javascript复制
# 创建一个3x3的单位矩阵
identity_matrix = np.eye(3)
print("单位矩阵:n", identity_matrix)

# 创建一个形状为2x3的随机数组
random_array = np.random.random((2, 3))
print("随机数组:n", random_array)

输出结果:

代码语言:javascript复制
单位矩阵:
 [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

随机数组:
 [[0.29727366 0.81015343 0.8052614 ]
 [0.41289912 0.84407795 0.09258058]]

np.eye()函数创建了一个单位矩阵,而np.random.random()函数则生成了一个随机数数组。

使用arangelinspacelogspace创建数组

Numpy还提供了生成数值序列的函数,如arangelinspacelogspace,这些函数特别适用于创建具有固定步长或等间距数值的数组。

使用arange创建等差数列

代码语言:javascript复制
# 创建一个从0到10(不包括10),步长为2的数组
arr_arange = np.arange(0, 10, 2)
print("使用arange创建的数组:", arr_arange)

输出结果:

代码语言:javascript复制
使用arange创建的数组: [0 2 4 6 8]

arange函数类似于Python的range函数,可以生成具有固定步长的数值序列。

使用linspace创建等间距数组

代码语言:javascript复制
# 创建一个从0到1,包含5个等间距数值的数组
arr_linspace = np.linspace(0, 1, 5)
print("使用linspace创建的数组:", arr_linspace)

输出结果:

代码语言:javascript复制
使用linspace创建的数组: [0.   0.25 0.5  0.75 1.  ]

linspace函数生成一个包含指定数量等间距数值的数组。

使用logspace创建等比数列

代码语言:javascript复制
# 创建一个从10^1到10^3,包含5个等比数值的数组
arr_logspace = np.logspace(1, 3, 5)
print("使用logspace创建的数组:", arr_logspace)

输出结果:

代码语言:javascript复制
使用logspace创建的数组: [  10.   31.6227766  100.  316.22776602 1000. ]

logspace函数生成一个等比数列,通常用于创建指数增长或衰减的数值序列。

Numpy数组的基本属性

Numpy数组不仅仅是一个多维数据容器,它还包含了许多有用的属性,帮助更好地理解和操作数组。

shape属性

shape属性返回一个元组,表示数组的维度大小。例如,(3, 4)表示数组有3行4列。

代码语言:javascript复制
# 查看arr2的形状
print("二维数组的形状:", arr2.shape)

输出结果:

代码语言:javascript复制
二维数组的形状: (2, 3)

在这个示例中,数组arr2的形状为2行3列。

dtype属性

dtype属性表示数组中元素的数据类型。Numpy支持多种数据类型,包括整数、浮点数、复数等。

代码语言:javascript复制
# 查看数组的元素类型
print("arr1的元素类型:", arr1.dtype)
print("random_array的元素类型:", random_array.dtype)

输出结果:

代码语言:javascript复制
arr1的元素类型: int64
random_array的元素类型: float64

在这个示例中,查看了两个数组的元素数据类型,分别为整数和浮点数。

ndim属性

ndim属性返回数组的维度数量,即数组是几维的。

代码语言:javascript复制
# 查看数组的维度
print("arr1的维度:", arr1.ndim)
print("arr2的维度:", arr2.ndim)

输出结果:

代码语言:javascript复制
arr1的维度: 1
arr2的维度: 2

arr1是一个一维数组,而arr2是一个二维数组。

size属性

size属性返回数组中的元素总数,即数组的大小。

代码语言:javascript复制
# 查看数组的大小
print("arr1的大小:", arr1.size)
print("arr2的大小:", arr2.size)

输出结果:

代码语言:javascript复制
arr1的大小: 5
arr2的大小: 6

在这个示例中,arr1包含5个元素,而arr2包含6个元素。

itemsize属性

itemsize属性表示数组中每个元素占用的字节数。该属性与dtype密切相关,因为不同的数据类型占用的内存大小不同。

代码语言:javascript复制
# 查看数组元素的字节大小
print("arr1的元素字节大小:", arr1.itemsize)
print("random_array的元素字节大小:", random_array.itemsize)

输出结果:

代码语言:javascript复制
arr1的元素字节大小: 8
random_array的元素字节大小: 8

在这个示例中,两个数组的元素均占用8个字节,这是因为它们的dtype分别是int64float64,每个元素都占用64位(8字节)的内存空间。

nbytes属性

nbytes属性表示

数组占用的总字节数,它等于sizeitemsize的乘积。

代码语言:javascript复制
# 查看数组占用的总字节数
print("arr1占用的总字节数:", arr1.nbytes)
print("arr2占用的总字节数:", arr2.nbytes)

输出结果:

代码语言:javascript复制
arr1占用的总字节数: 40
arr2占用的总字节数: 48

在这个示例中,可以看到每个数组占用了多少内存空间。

总结

本文详细介绍了如何使用Python的Numpy库创建数组,以及Numpy数组的基本属性。讨论了从列表和元组创建数组、使用内置函数创建特殊数组、以及使用arangelinspacelogspace生成数值序列的不同方法。此外,还探讨了Numpy数组的几个重要属性,如shapedtypendimsizeitemsizenbytes,这些属性帮助更好地理解数组的结构和内存占用情况。掌握这些基础知识,在数据分析和科学计算中灵活运用Numpy奠定坚实的基础。

0 人点赞