numpy基本操作语法

本文是我用 jupter notebook 写完之后直接转的 markdown,也可以直接查看jupter notebook格式:

基本操作:https://tzs.lvliao.xyz/numpy_operation.html

矩阵运算:https://tzs.lvliao.xyz/numpy_computation.html

聚合运算:https://tzs.lvliao.xyz/numpy_aggregation.html

arg 运算:https://tzs.lvliao.xyz/numpy_arg.html

Fancy Indexing:https://tzs.lvliao.xyz/Fancy Indexing.html

import numpy as np
np.zeros(10) #创建10个0的数组
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.zeros(10).dtype #查看类型
dtype('float64')
np.zeros(10,dtype=int)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
np.zeros((3,5)) #创建3行5列元素全为0的矩阵
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])
np.zeros(shape=(3,5),dtype=int)
array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])
np.ones(10) #创建10个1的数组
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
np.full((3,5),666) #创建3行5列元素全为666的矩阵
array([[666, 666, 666, 666, 666],
       [666, 666, 666, 666, 666],
       [666, 666, 666, 666, 666]])
np.full((3,5),fill_value=666)
array([[666, 666, 666, 666, 666],
       [666, 666, 666, 666, 666],
       [666, 666, 666, 666, 666]])
np.arange(0,1,0.2) #0开始,1结束步长为0.2,但是不包括1
array([0. , 0.2, 0.4, 0.6, 0.8])
np.arange(10) #默认从0开始1为步长,取10个数
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

linspace

np.linspace(0,20,11) #取0--20之间11个数,步长一致
array([ 0.,  2.,  4.,  6.,  8., 10., 12., 14., 16., 18., 20.])
np.linspace(0,20,10)
array([ 0.        ,  2.22222222,  4.44444444,  6.66666667,  8.88888889,
       11.11111111, 13.33333333, 15.55555556, 17.77777778, 20.        ])

random

np.random.randint(0,10) #0-10任意的整数
6
np.random.randint(0,10,6)#0-10取6个任意的整数,但不包括10
array([1, 9, 1, 9, 1, 5])
np.random.randint(4,100,size=(3,5))
array([[60, 15, 67, 47, 34],
       [ 7,  5, 49, 66, 22],
       [11, 42, 19, 97, 35]])
np.random.seed(666)                    #设置随机种子,随机种子一致的话,随机数也一致
np.random.randint(4,100,size=(3,5))
array([[ 6, 49, 34, 66, 74],
       [77, 34, 40, 65, 95],
       [98, 55, 64, 99, 32]])
np.random.seed(666)
np.random.randint(4,100,size=(3,5))
array([[ 6, 49, 34, 66, 74],
       [77, 34, 40, 65, 95],
       [98, 55, 64, 99, 32]])
np.random.random((3,5))
array([[0.09992856, 0.50806631, 0.20024754, 0.74415417, 0.192892  ],
       [0.70084475, 0.29322811, 0.77447945, 0.00510884, 0.11285765],
       [0.11095367, 0.24766823, 0.0232363 , 0.72732115, 0.34003494]])
#normal(loc=0.0,scale=1.0, size=None) loc 是均值,scale是标准差 ,size默认是None,输出一个数
np.random.normal(10,100,(3,5))
array([[  82.9464519 ,  -22.69547657,  124.13367716,   55.24366191,
        -213.49687669],
       [ 137.04776598,  -62.92882099,  145.9252547 , -110.99026555,
           5.38172775],
       [ -34.11824366,   56.95343143,   54.32581718, -156.73887544,
        -171.73174936]])
np.random.normal?
# 查看normal文档

Numpy.array的基本操作

import numpy as np
x = np.arange(10) # 创建10个元素的数组,从0开始,步长为1
x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
X = np.arange(15).reshape(3,5)
X
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
x.ndim  #维度
1
X.ndim  #维度
2
x.shape  #只有一个维度并且有10个元素
(10,)
X.shape #有2个维度并第一个维度有3个元素,第二个维度有5个元素

(3, 5)
x.size  #总共有多少个元素
10
X.size #总共有多少个元素
15
X[2, 2] #访问矩阵中的值
12
x[6]
6
x[0:5]
array([0, 1, 2, 3, 4])
x[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
X[:2,:3]
array([[0, 1, 2],
       [5, 6, 7]])
X[:2, ::2]
array([[0, 2, 4],
       [5, 7, 9]])
X[::-1, ::-2]
array([[14, 12, 10],
       [ 9,  7,  5],
       [ 4,  2,  0]])
X[::-1, ::-1]
array([[14, 13, 12, 11, 10],
       [ 9,  8,  7,  6,  5],
       [ 4,  3,  2,  1,  0]])
X[:,0]
array([ 0,  5, 10])
subX = X[:2, :3].copy() #用copy函数来取numpy中的子矩阵,如果直接用X[:2, :3]的话只是引用,改变子矩阵的值,原来的矩阵值也会变
subX
array([[0, 1, 2],
       [5, 6, 7]])

Reshape

x.shape
(10,)
x.ndim
1
x.reshape(2,5)
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
x.ndim

1
A=x.reshape(2,5)
A
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
A.ndim
2
x.reshape(2,-1) # 指定分成2行,-1表示让程序自己计算能产生几列
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

合并操作

x = np.array([1,2,3])
y = np.array([4,5,6])
x
array([1, 2, 3])
y
array([4, 5, 6])
np.concatenate([x,y]) #只能拼接维度相同的矩阵
array([1, 2, 3, 4, 5, 6])
z = np.array([666,666,666])
np.concatenate([x,y,z])
array([  1,   2,   3,   4,   5,   6, 666, 666, 666])
A = np.array([[1,2,3],
              [4,5,6]])
np.concatenate([A, A])
array([[1, 2, 3],
       [4, 5, 6],
       [1, 2, 3],
       [4, 5, 6]])
np.concatenate([A, A],axis=1) # 按照第一个维度的方向拼接
array([[1, 2, 3, 1, 2, 3],
       [4, 5, 6, 4, 5, 6]])
np.concatenate([A, A],axis=0) # 按照第0个维度的方向拼接
array([[1, 2, 3],
       [4, 5, 6],
       [1, 2, 3],
       [4, 5, 6]])
np.concatenate([A, z.reshape(1,-1)]) 
array([[  1,   2,   3],
       [  4,   5,   6],
       [666, 666, 666]])
np.vstack([A,z]) #垂直方向拼接矩阵,维度可以不一样
array([[  1,   2,   3],
       [  4,   5,   6],
       [666, 666, 666]])
B = np.full((2,2),100)
B
array([[100, 100],
       [100, 100]])
np.hstack([A,B]) #水平方向拼接矩阵,维度可以不一样
array([[  1,   2,   3, 100, 100],
       [  4,   5,   6, 100, 100]])

分割操作

x = np.arange(10)
x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x1, x2, x3 = np.split(x,[3,7]) #以元素3,7分割数组
x1
array([0, 1, 2])
x2
array([3, 4, 5, 6])
x3
array([7, 8, 9])
 x4,x5 = np.split(x,[5]) #以元素5分割数组
x4
array([0, 1, 2, 3, 4])
x5
array([5, 6, 7, 8, 9])
A1 = np.arange(16).reshape(4,4)
A1
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
a1, a2 = np.split(A1,[2]) # 二维切割前两行
a1

array([[0, 1, 2, 3],
       [4, 5, 6, 7]])
a2
array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])
a1, a2 = np.split(A1,[2],axis=1) # 二维切割前两列
a1
array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]])
a2
array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])
upper,lower = np.vsplit(A1,[2]) # 垂直方向切
upper
array([[0, 1, 2, 3],
       [4, 5, 6, 7]])
lower
array([[ 8,  9, 10, 11],
       [12, 13, 14, 15]])
left,right = np.hsplit(A1,[2]) # 水平方向切
left
array([[ 0,  1],
       [ 4,  5],
       [ 8,  9],
       [12, 13]])
right
array([[ 2,  3],
       [ 6,  7],
       [10, 11],
       [14, 15]])

个人博客:numpy 的基本操作语法

ヾ( ̄▽ ̄)Bye~~Bye~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值