说明
NumPy 教程 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在一些场景下,需要创建一些特殊值的数组,比如全为 0、全为 1、对象线为 1 等等。Numpy 可以满足我们的要求。
有以下常用的方法,可以创建一个矩阵内为特殊数字的数组(按 np.xxx 格式使用)。
方法 | 说明 |
---|---|
np.zeros(shape[, dtype, order]) | 返回给定形状和类型的新数组,用 0 填充 |
np.ones(shape[, dtype, order]) | 返回一个给定形状和类型的新数组,并全填充 1 |
np.empty(shape[, dtype, order]) | 返回给定形状和类型的新数组,内容随机 |
np.full(shape, fill_value[, dtype, order]) | 返回给定形状和类型的新数组,用指定的 fill_value 值填充 |
np.eye(N[, M, k, dtype, order]) | 返回一个二维数组,对角线上为 1,其他位置为 0 |
np.identity(n[, dtype]) | 返回标识数组 |
np.ones_like(a[, dtype, order, subok, shape]) | 返回一个与给定数组具有相同形状和类型的数组 |
np.zeros_like(a[, dtype, order, subok, shape]) | 返回与给定数组具有相同形状和类型的零数组 |
np.empty_like(prototype[, dtype, order, subok, …]) | 返回与给定数组具有相同形状和类型的新数组 |
np.full_like(a, fill_value[, dtype, order, …]) | 返回与给定数组具有相同形状和类型的完整数组 |
数组值全为 0、1、指定值的方法:
# 值全为 0
np.zeros(5)
# array([ 0., 0., 0., 0., 0.])
np.zeros((5,), dtype=int)
# array([0, 0, 0, 0, 0])
np.zeros((2, 1))
'''
array([[ 0.],
[ 0.]])
'''
# 值全为 1
np.ones(5)
# array([1., 1., 1., 1., 1.])
np.ones((5,), dtype=int)
# array([1, 1, 1, 1, 1])
np.ones((2, 1))
'''
array([[1.],
[1.]])
'''
# 值全为指定填充值
np.full((2, 2), np.inf)
'''
array([[inf, inf],
[inf, inf]])
'''
np.full((2, 2), 10)
'''
array([[10, 10],
[10, 10]])
'''
np.full((2, 2), [1, 2])
'''
array([[1, 2],
[1, 2]])
'''
np.empty() 返回给定形状和类型的新数组,内容随机,与 zeros 不同,empty 不会将数组值设置为零,因此可能会稍微快一点。另一方面,它要求用户手动设置数组中的所有值,因此应谨慎使用。
np.empty([2, 3])
'''
array([[0.e+000, 0.e+000, 5.e-324],
[5.e-324, 5.e-324, 5.e-324]])
'''
np.empty([2, 3], dtype=int)
'''
array([[0, 0, 1],
[1, 1, 1]])
'''
np.ones_like(a) 等按传入的数据(array_like)形状生成指定值的新数组:
a = np.arange(6).reshape((2, 3))
a
'''
array([[0, 1, 2],
[3, 4, 5]])
'''
np.ones_like(a)
'''
array([[1, 1, 1],
[1, 1, 1]])
'''
np.eye 返回对角线上值为 1,其他位置为 0 的数据:
np.eye(3, dtype=int)
'''
array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
'''
# 指定列
np.eye(3, 4, dtype=int)
'''
array([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0]])
'''
# 移动对角线
np.eye(4, k=-1, dtype=int)
'''
array([[0, 0, 0, 0],
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0]])
'''
np.identity 生成的标识数组是一个正方形数组(与 np.eye 相比只能创建方阵),主对角线为 1,其余地方为 0。
np.identity(4, dtype=int)
'''
array([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]])
'''
更新时间:Jan. 5, 2021, 8:27 a.m. 标签:numpy array