NumPy 是python中一个用于科学计算的第三方库,其强大的功能使其在机器学习中被广泛使用
ndarray对象
ndarray是一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
ndarray有一些限制:
- 数组中元素的数据类型必须一致
- 数组必须是严格的”矩形”,即每一行、每一列或更高维度下的元素数量必须相等
- 一旦创建,数组的大小不能改变
ndarray的创建方法
主要有np.array()和np.asarray()两种方式创建一个ndarray对象
1 2 3 4 5 6 7 8 9 10 11 12
| import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(arr1)
arr2 = np.asarray(arr1) print(id(arr1) == id(arr2))
|
ndarray的属性
ndarray 包含以下属性:
1 2 3 4 5 6 7 8 9
| import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr.ndim arr.dtype arr.shape arr.size arr.itemsize
|
其他创建方式
np.zeros()、np.ones()、np.full()、np.empty()分别用于创建一个指定形状下全为0、全为1、全为指定数和未初始化的数组
1 2 3 4 5 6
| import numpy as np
np.zeros((3,4),dtype='int64') np.ones((3,4)) np.full((3,4),5) np.empty((3,4))
|
上述方法都有对应的_like方法,可用于创建与指定数组具有相同形状(ndarray.shape)的新数组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import numpy as np
arr1 = array([[1,2,3],[4,5,6],[7,8,9]])
np.zeros_like(arr1)
np.full_like(arr1,5)
|
np.arange()方法返回给定范围内间隔均匀的一维数组,用法与range()方法相似:
1 2 3
| import numpy as np
arr = np.arange(2,10,3)
|
np.linspace()和np.logspace()方法分别返回给定范围内的等差数列和等比数列,endpoint参数指定stop是否被包含在数列中,默认值为True:
1 2 3 4 5 6 7 8 9
| import numpy as np
arr1 = np.linspace(1,11,4) print(arr1)
arr2 = np.logspace(2,7,5,endpoint=False,base=3) print(arr2)
|
创建随机数组
np.random.rand()方法返回给定形状的随机数组,元素值在[0,1)区间
np.random.randint()方法返回给定形状的随机整数组,可指定随机数的上下区间
np.random.uniform()方法返回给定形状的随机浮点数组,可指定随机数的上下区间
random.randn()方法返回给定形状的随机数组,用标准正态分布(均值为0,标准差为1)的随机样本填充
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import numpy as np
arr1 = np.random.rand(2,3,5) print(arr1)
arr2 = np.random.randint(1,11,(2,3)) print(arr2)
arr3 = np.random.uniform(2.71,3.14,(3,5)) print(arr3)
arr4 = np.random.randn(4,2) print(arr4)
|