NumPy数组的基础知识

  • Post category:Python

NumPy是Python中一个用于科学计算的重要扩展库,它提供了高效的数组和矩阵计算功能,支持广泛的数学、逻辑和操纵操作。本篇攻略将着重介绍NumPy的数组(数组是NumPy中的基础对象)的基础知识。

NumPy的数组

NumPy的数组是一个多维容器,可以包含同类型的数据。一个数组由一个描述其类型、大小和形状的元数据组成。通过NumPy数组,用户可以高效的进行矩阵和向量运算,还可以方便地进行数据的处理和分析。

数组的创建

NumPy数组可以通过很多方式创建。最常用的创建方式是通过列表或元组转换得到。

import numpy as np

# 列表转化生成一维数组
a = np.array([1, 2, 3])

# 元组转化生成二维数组
b = np.array([(1, 2), (3, 4)])

除此之外,还可以通过NumPy自带的一些函数创建数组,例如:

#创建0矩阵,参数为矩阵形状
c = np.zeros((2,2))

#创建1矩阵,参数为矩阵形状
d = np.ones((2,2))

#创建单位矩阵,参数为矩阵大小
e = np.eye(2)

#创建空矩阵,参数为矩阵形状
f = np.empty((2,2))

数组的属性

创建好的数组,可以通过一些属性查看其各种特点。例如数组的维度、形状和元素数据类型。

import numpy as np

a = np.array([1, 2, 3])         # 一维数组
b = np.array([(1, 2), (3, 4)])  # 二维数组

print(a.ndim)                   # 数组的维度
print(b.ndim)
print(a.shape)                  # 数组的形状
print(b.shape)
print(a.dtype)                  # 数组的数据类型
print(b.dtype)

输出:

1
2
(3,)
(2, 2)
int64
int64

数组的索引与切片

NumPy数组的元素可以使用索引和切片来访问和修改。数组的索引是从0开始计数的。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([(1, 2), (3, 4)])

print(a[0])     # 访问第一个元素
print(b[1, 0])  # 访问第二行第一个元素

a[0] = 4        # 修改第一个元素
print(a)

c = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(c[:2, 1:])  # 切片访问数组的前两行与第二列及其后面的元素

输出:

1
3
[4 2 3]
[[2 3]
 [5 6]]

数组的运算

NumPy数组可以进行基本的算术运算,包括加、减、乘、除等运算,以及矩阵的变换操作。

import numpy as np

a = np.array([1, 2, 3])
b = np.array([(1, 2), (3, 4)])

print(a + 1)              # 加法运算
print(b * 2)              # 乘法运算
print(np.dot(b, (1, 2)))  # 矩阵乘法

输出:

[2 3 4]
[[2 4]
 [6 8]]
[ 5 11]

示例1:计算一维数组中的方差

import numpy as np

a = np.array([1, 2, 3, 4, 5])
mean = np.mean(a)  # 计算数组的平均值
var = np.sum((a-mean)**2) / (len(a)-1)  # 计算方差
print(var)

输出:

2.5

示例2:矩阵转置运算

import numpy as np

a = np.array([(1, 2), (3, 4), (5, 6)])
b = np.transpose(a)  # 矩阵转置运算
print(a)
print(b)

输出:

[[1 2]
 [3 4]
 [5 6]]
[[1 3 5]
 [2 4 6]]

本篇攻略介绍了NumPy数组的基础知识,包括数组的创建、属性、索引和切片、运算,以及两个应用示例。掌握这些基础还是非常重要的。NumPy数组是SciPy中各种算法的基础之一,也是数据分析、机器学习等领域必须熟练掌握的知识点。