NumPy 入门教程

NumPy 入门教程

NumPy 是一个非常流行的 Python 数值计算库,它可以帮助我们处理向量、矩阵等数学对象,还提供了大量的数学函数和工具函数。

安装

在使用 NumPy 之前,需要先安装它。可以使用以下命令来安装:

pip install numpy

数组创建与操作

创建数组是 NumPy 最基本的操作。可以使用 numpy.array() 函数来创建一个数组:

import numpy as np

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

输出:

[1 2 3]

可以使用 numpy.zeros() 函数和 numpy.ones() 函数来创建全零和全一数组:

zeros = np.zeros((2, 3))
print(zeros)

ones = np.ones((2, 3))
print(ones)

输出:

[[0. 0. 0.]
 [0. 0. 0.]]
 
[[1. 1. 1.]
 [1. 1. 1.]]

可以使用 numpy.arange() 函数来创建指定间隔的一维数组:

a = np.arange(0, 10, 2)
print(a)

输出:

[0 2 4 6 8]

可以使用数组的各种方法来操作数组,比如:

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

c = np.concatenate([a, b])
print(c)

d = np.vstack([a, b])
print(d)

输出:

[1 2 3 4 5 6]

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

数组索引与切片

NumPy 中也可以使用索引和切片来访问数组中的元素:

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

print(a[0]) # 1

print(a[1:4]) # [2 3 4]

a[2:4] = 0
print(a) # [1 2 0 0 5]

数组运算

NumPy 提供了许多数组运算的函数,例如:

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

print(a + b) # [5 7 9]

print(a - b) # [-3 -3 -3]

print(a * b) # [4 10 18]

print(a / b) # [0.25 0.4 0.5]

print(np.dot(a, b)) # 点积 32

多维数组的创建与操作

除了一维数组之外,NumPy 还支持多维数组的创建和操作。可以使用 numpy.array() 函数来创建一个多维数组:

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)

输出:

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

可以使用 numpy.zeros() 函数和 numpy.ones() 函数来创建全零和全一多维数组:

zeros = np.zeros((2, 3, 4)) # 三维数组
print(zeros)

ones = np.ones((2, 3, 4)) # 三维数组
print(ones)

输出:

[[[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]

 [[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]]
 
[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]

可以使用数组的各种方法和操作函数来操作多维数组:

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8, 9], [10, 11, 12]])

c = np.concatenate([a, b], axis=1)
print(c)

d = np.vstack([a, b])
e = np.sum(d, axis=0)
print(e)

输出:

[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]
 
[22 26 30]

数组的形状和大小

我们通常需要了解数组的形状和大小,可以使用 numpy.shape() 函数和 numpy.size() 函数来查询这些信息:

a = np.array([[1, 2, 3], [4, 5, 6]])
print(np.shape(a)) # (2, 3)

print(np.size(a)) # 6

数组的广播

广播是一种特殊的数组运算,它可以让不同形状的数组进行运算,比如:

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

print(a + b)

输出:

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

数组的复制和视图

在 NumPy 中,数组的赋值默认是引用,即两个变量指向同一个数组,因此修改其中一个变量的值会影响到另一个变量。可以使用 numpy.copy() 函数来创建一个数组的副本,这样就不会影响原数组了:

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

print(a) # [0 2 3]
print(b) # [0 2 3]

c = np.copy(a)
c[1] = 0

print(a) # [0 2 3]
print(c) # [0 0 3]

还有一种特殊的数组视图,即切片得到的数组。这种数组只是原数组的一个引用,并不是副本,因此也会导致修改原数组的值:

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

print(a) # [1 0 3]
print(b) # [0]

矩阵运算

在 NumPy 中,还有矩阵相关的运算,比如逆矩阵、特征值等等。可以使用 numpy.linalg 模块来进行矩阵运算:

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

print(b)

e, v = np.linalg.eig(a)
print(e)
print(v)

输出:

[[-2.   1. ]
 [ 1.5 -0.5]]

[-0.37228132+0.j  5.37228132+0.j]

[[-0.82456484 -0.41597356]
 [ 0.56576746 -0.90937671]]

总结

这是一个简短的 NumPy 入门教程,通过学习这些基本的操作和函数,可以进一步学习和掌握更多高级的 NumPy 技能。

希望能帮助大家更好地使用这个强大的数学工具库。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百年孤独百年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值