【Python】Numpy 常用方法

基本数据结构

import numpy as np

ar=np.array([1,2,3,4])
print(ar)
# [1 2 3 4]
print(ar.ndim)  # 轴数
# 1
print(ar.size) # 元素数量
# 4
print(ar.dtype) # 元素类型
# int64
print(np.arange(1, 10, 1))  # 随机数
# [1 2 3 4 5 6 7 8 9]
print(np.linspace(1, 2, num=4))   # 均匀间隔生成随机数
# [1.         1.33333333 1.66666667 2.        ]
print(np.zeros((3, 3), dtype=np.int))    # 元素为多维数组
# [[0 0 0]
# [0 0 0]
# [0 0 0]]
ar2 = np.array([list(range(5)), list(range(5, 10))])
print(ar2)
# [[0 1 2 3 4]
# [5 6 7 8 9]]
ar3 = np.zeros_like(ar2)    # 元素为多为复制数组
print(ar3)
# [[0 0 0 0 0]
# [0 0 0 0 0]]
print(np.eye(5))    # 单位矩阵
# [[1. 0. 0. 0. 0.]
# [0. 1. 0. 0. 0.]
# [0. 0. 1. 0. 0.]
# [0. 0. 0. 1. 0.]
# [0. 0. 0. 0. 1.]]

索引及切片

import numpy as np

ar=np.arange(20)    # 一维数组
print(ar, ar[4])
# [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19] 4
print(ar[4:7])     # 切片,左闭右开
# [4 5 6]
ar=np.arange(16).reshape(4, 4)  # 二维数组
print(ar)
#[[ 0  1  2  3]
#[ 4  5  6  7]
#[ 8  9 10 11]
# [12 13 14 15]]

print(ar[:2,1:])    # 切片
# [[1 2 3]
# [5 6 7]]
print(ar[2])
# [ 8  9 10 11]
ar=np.arange(8).reshape(2,2,2)  # 三维数组
print(ar[0])
# [[0 1]
# [2 3]]
print(ar[0][0])
# [0 1]
print(ar[0][0][1])
# 1
ar=np.arange(10)
b=ar.copy()     # 复制,传值
b[7:9]=200
print(ar)
# [0 1 2 3 4 5 6 7 8 9]
print(b)
# [  0   1   2   3   4   5   6 200 200   9]

随机数

import numpy as np

sample=np.random.normal(size=(4,4))     # 正态分布随机数
print(sample)
# [[-1.5532405   2.23826961 -1.28646975  1.13127686]
# [-1.07603604 -1.3182315  -1.26062821  1.68190304]
# [ 0.49637228  0.98560157  1.12290671  0.03064749]
# [ 0.12426356 -1.40515829 -1.20611192 -1.52726703]]

b=np.random.rand(4) # 4个[0,1)的随机浮点数,均匀分布
print(b, type(b))
# [0.42470664 0.79146676 0.206857   0.2763579 ] <class 'numpy.ndarray'>
c=np.random.rand(2, 3)  # 2*3个[0,1)的随机浮点数,均匀分布
print(c, type(c))
# [[6.34458376e-01 7.28915709e-04 9.32725498e-01]
# [7.77514138e-01 8.82439955e-01 7.94918012e-02]] <class 'numpy.ndarray'>
print(np.random.randint(2, 6, size=5))  # 随机整数
# [4 5 5 4 2]
print(np.random.randint(2, 6, (2,3)))   # 随机整数,维度
# [[5 4 3]
# [2 2 2]]

常用函数

import numpy as np

ar=np.ones((5,2))
print(ar, ar.T)
#[[1. 1.]
# [1. 1.]
# [1. 1.]
# [1. 1.]
# [1. 1.]]
#
#[[1. 1. 1. 1. 1.]
# [1. 1. 1. 1. 1.]]
ar2 = np.resize(np.arange(5), (3,4))    # 重新定义形状
print(ar2)
# [[0 1 2 3]
# [4 0 1 2]
# [3 4 0 1]]
ar3=np.arange(10, dtype=float)
print(ar3, ar3.dtype)
# [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] float64
ar4=ar3.astype(np.int32)    # 转换元素类型
print(ar4, ar4.dtype)
# [0 1 2 3 4 5 6 7 8 9] int32
a=np.arange(5)
b=np.arange(5,9)
ar1=np.hstack((a,b))    # 水平堆叠(按列),注意形状
print(a, b)
# [0 1 2 3 4]
# [5 6 7 8]
print(ar1, ar1.shape)
# [0 1 2 3 4 5 6 7 8] (9,)
a=np.arange(5)
b=np.arange(5,10)
ar2=np.vstack((a,b))    # 垂直堆叠(按列)
print(ar2, ar2.shape)
# [[0 1 2 3 4]
# [5 6 7 8 9]] (2, 5)

ar1=np.stack((a, b))    # 堆叠,轴为0按列
ar2=np.stack((a,b),axis=1)
print(ar1, ar1.shape)
# [[0 1 2 3 4]
# [5 6 7 8 9]] (2, 5)

print(ar2, ar2.shape)
# [[0 5]
#  [1 6]
#  [2 7]
#  [3 8]
#  [4 9]] (5, 2)

ar=np.arange(16).reshape(4, 4)
print(ar)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]
ar1=np.hsplit(ar, 2)    # 水平拆分,按列
print(ar1, type(ar1))
# [array([[ 0,  1],
#        [ 4,  5],
#        [ 8,  9],
#        [12, 13]]), 
# array([[ 2,  3],
#        [ 6,  7],
#        [10, 11],
#        [14, 15]])] 
# <class 'list'>

ar2=np.vsplit(ar,4)
print(ar2, type(ar2))
# [array([[0, 1, 2, 3]]), 
# array([[4, 5, 6, 7]]), 
# array([[ 8,  9, 10, 11]]), 
# array([[12, 13, 14, 15]])] 
# 
# <class 'list'>

ar=np.arange(6).reshape(2,3)
print(ar+10)
# [[10 11 12]
#  [13 14 15]]

print(ar*2)
# [[ 0  2  4]
#  [ 6  8 10]]
print(1/(ar+1))
# [[1.         0.5        0.33333333]
#  [0.25       0.2        0.16666667]]
print(ar**5)
# [[   0    1   32]
#  [ 243 1024 3125]]
print(ar.mean())
# 2.5
print(ar.max())
# 5
print(ar.min())
# 0
print(ar.std())     # 标准差
# 1.707825127659933
print(ar.var())     # 方差
# 2.9166666666666665
print(ar.sum(), np.sum(ar, axis=0))     # 求和,轴为0按列求和
# 15 [3 5 7]
print(np.sort(np.array([1,4,3,2,5,1])))
# [1 1 2 3 4 5]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值