1. 简介
NumPy是Python科学计算的基础库之一,它提供了高性能的多维数组对象ndarray,以及一系列工具,使我们能够使用Python编写高效的科学计算程序。本文将着重介绍NumPy中的ndarray对象。
2. 创建ndarray对象
NumPy中的ndarray对象是一个n维数组,它可以存储任意类型的元素,但数组中所有元素的类型必须相同。创建ndarray对象的方法有很多种,下面介绍几种常用的方式。
2.1 使用array函数创建ndarray对象
使用array函数可以将Python中的列表、元组等序列类型转换为ndarray对象。
import numpy as np
# 创建一个包含1到5的一维数组
a = np.array([1, 2, 3, 4, 5])
print(a)
# 输出:[1 2 3 4 5]
# 创建一个包含嵌套列表的二维数组
b = np.array([[1, 2], [3, 4], [5, 6]])
print(b)
# 输出:
# [[1 2]
# [3 4]
# [5 6]]
ndarray对象的类型可以用dtype属性获取,数组中元素的个数可以用shape属性获取。
2.2 使用arange函数创建ndarray对象
arange函数可以创建一个指定范围内的等间隔一维数组。它的用法与Python中的range函数类似。
import numpy as np
# 创建包含0到9的一维数组
a = np.arange(10)
print(a)
# 输出:[0 1 2 3 4 5 6 7 8 9]
2.3 使用linspace函数创建ndarray对象
linspace函数可以创建一个指定范围内的等间隔一维数组。
import numpy as np
# 在0到1之间创建包含5个元素的一维数组
a = np.linspace(0, 1, 5)
print(a)
# 输出:[0. 0.25 0.5 0.75 1. ]
3. ndarry对象的基本操作
ndarray对象与列表类似,但它支持更多的操作。下面介绍一些常用的操作方式。
3.1 基本索引和切片
与Python中的列表类似,ndarray对象也支持基本的索引和切片操作。
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a[2])
# 输出:3
b = np.array([[1, 2], [3, 4], [5, 6]])
print(b[1, 0])
# 输出:3
# 切取二维数组的第一列
print(b[:, 0])
# 输出:[1 3 5]
3.2 形状操作
可以通过reshape方法改变ndarray对象的形状。
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape((2, 3))
print(b)
# 输出:
# [[1 2 3]
# [4 5 6]]
3.3 数组转置
使用transpose方法或者T属性可以得到ndarray对象的转置。
import numpy as np
a = np.array([[1, 2], [3, 4], [5, 6]])
b = a.transpose()
print(b)
# 输出:
# [[1 3 5]
# [2 4 6]]
c = a.T
print(c)
# 输出:
# [[1 3 5]
# [2 4 6]]
3.4 带条件的索引和切片
可以使用布尔数组作为ndarry对象的索引。
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = (a > 3)
print(b)
# 输出:[False False False True True True]
c = a[b]
print(c)
# 输出:[4 5 6]
3.5 通用函数ufunc
Numpy提供了很多常用的数学函数,这些函数都是通用的,它们可以同时操作ndarray对象中的所有元素。
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
b = np.sin(a)
print(b)
# 输出:[ 0.84147098 0.90929743 0.14112001 -0.7568025 -0.95892427 -0.2794155 ]
4. Numpy随机数生成
Numpy还提供了很多用于生成随机数的函数,下面介绍其中的几个。
4.1 随机数生成器
使用random模块中的RandomState类可以创建一个随机数生成器。
import numpy as np
rs = np.random.RandomState(0)
print(rs.randn(3, 3))
# 输出:
# [[-1.0464472 0.37701517 0.07781789]
# [-0.86298662 -0.18795659 -0.23605446]
# [-0.18718385 -0.11880682 0.326148 ]]
4.2 均匀分布的随机数
使用random模块中的uniform函数可以生成一个均匀分布的随机数。
import numpy as np
a = np.random.uniform(-1, 1, (3, 3))
print(a)
# 输出:
# [[-0.69376646 0.36967709 -0.05893152]
# [-0.81837517 -0.21550222 0.48720567]
# [-0.12019719 -0.40833713 0.07987114]]
4.3 正态分布的随机数
使用random模块中的normal函数可以生成一个正态分布的随机数。
import numpy as np
a = np.random.normal(0, 1, (3, 3))
print(a)
# 输出:
# [[-0.99702683 0.30740228 -2.05979296]
# [-0.19085887 -0.12996859 -0.02030269]
# [-0.02766438 0.56769209 0.41497003]]
5. 总结
本文介绍了NumPy中的ndarray对象,包括创建方式、基本操作和随机数生成等方面。NumPy的高效运算能力和丰富的功能为科学计算提供了强有力的支持。