Numpy
Numpy是Python中科学计算的核心库。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具。
1 数组 Arrays
numpy数组是一个值网格,所有类型都相同,并由非负整数元组索引。 维数是数组的排名; 数组的形状是一个整数元组,给出了每个维度的数组大小。
我们可以从嵌套的Python列表初始化numpy数组,并使用方括号访问元素:
import numpy as np
a = np.array([1, 2, 3]) # 创建一个一维数组
print(type(a)) # >>> "<class 'numpy.ndarray'>"
print(a.shape) # >>> "(3,)"
print(a[0], a[1], a[2]) # >>> "1 2 3"
a[0] = 5 # 改变array中的元素(参考list)
print(a) # >>> "[5, 2, 3]"
b = np.array([[1,2,3],[4,5,6]]) # 创建一个二维数组
print(b.shape) # >>> "(2, 3)"
print(b[0, 0], b[0, 1], b[1, 0]) # >>> "1 2 4"
Numpy其它常见的创建数组的方式:
import numpy as np
a = np.zeros((2,2)) # 创造一个全0数组
print(a) # Prints "[[ 0. 0.]
# [ 0. 0.]]"
b = np.ones((1,2)) # 创造一个全1数组
print(b) # Prints "[[ 1. 1.]]"
c = np.full((2,2), 7) # 创造一个特定数字的数组
print(c) # Prints "[[ 7. 7.]
# [ 7. 7.]]"
d = np.eye(2) # 创造一个边长为2的矩阵,其对角线上的数字为1
print(d) # Prints "[[ 1. 0.]
# [ 0. 1.]]"
e = np.random.random((2,2)) # 创造一个(2,2)的包含随机数字的数组(默认下random创造的数字为0-1之间)
print(e) # Might print "[[ 0.91940167 0.08143941]
# [ 0.68744134 0.87236687]]"
2 数组索引
切片(Slicing)
切片(Slicing): 与Python列表类似,可以对numpy数组进行切片。由于数组可能是多维的,因此必须为数组的每个维指定一个切片:
import numpy as np
# 创造一个边长为(3,4)的二维数组
a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
# a >>>array([[ 1, 2, 3, 4],
# [ 5, 6, 7, 8],
# [ 9, 10, 11, 12]])
# 可以使用切片的方法创建一个子数组
b = a[:2, 1:3