numpy3.30上课

Numpy的“增”操作

import numpy as np
### 新建数组 ndarray()
arr1 = np.array([1,2,3,4])
arr1 #一维
array([1, 2, 3, 4])
arr2 = np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
arr2 #二维
array([[ 1,  2,  3,  4],
       [ 4,  5,  6,  7],
       [ 7,  8,  9, 10]])
np.linspace(0,1,12) #线性空间函数
array([0.        , 0.09090909, 0.18181818, 0.27272727, 0.36363636,
       0.45454545, 0.54545455, 0.63636364, 0.72727273, 0.81818182,
       0.90909091, 1.        ])
np.logspace(0,2,20)
array([  1.        ,   1.27427499,   1.62377674,   2.06913808,
         2.6366509 ,   3.35981829,   4.2813324 ,   5.45559478,
         6.95192796,   8.8586679 ,  11.28837892,  14.38449888,
        18.32980711,  23.35721469,  29.76351442,  37.92690191,
        48.32930239,  61.58482111,  78.47599704, 100.        ])
np.zeros((2,3)) #多维度创建,例:两行三列
array([[0., 0., 0.],
       [0., 0., 0.]])
np.eye(3) #对角线数相等
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
np.diag([1,2,3,4]) #对角线上放值
array([[1, 0, 0, 0],
       [0, 2, 0, 0],
       [0, 0, 3, 0],
       [0, 0, 0, 4]])

numpy的“查”的操作

### 数组属性的查看
arr2.shape
(3, 4)
arr2.ndim #维度,是二维
2
print(arr2.size) #数组中的元素数量
print(arr2.dtype) #数据类型
print(arr2.itemsize) #每个元素所占字节
12
int32
4
np.float64(56) #数据类型转换
56.0
np.int8(42.00)
42
np.bool(100) #除了0之外都是true
True
np.bool(0)
False
np.float(True)
1.0
np.float(False)
0.0

数组的索引查找

arr2[0][3] #查找第一行第三个数
4
arr2[0] #列出第一行
array([1, 2, 3, 4])
arr2[1][::2] #间隔取
array([4, 6])
arr2[2][::-1] #倒序取
array([10,  9,  8,  7])
arr2[0,0:3] #取1到3个数
array([1, 2, 3])

数组的“改”操作

arr2.shape
(3, 4)
arr2
array([[ 1,  2,  3,  4],
       [ 4,  5,  6,  7],
       [ 7,  8,  9, 10]])
arr2.shape=4,3 #强制修改维度,强制拆其中数
arr2
array([[ 1,  2,  3],
       [ 4,  4,  5],
       [ 6,  7,  7],
       [ 8,  9, 10]])
arr1.reshape(2,2) #修改维度,一维边二维
array([[1, 2],
       [3, 4]])
arr = np.arange(24).reshape(6,4) #24个数据,6行4列
arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23]])
arr.ravel() #横向展平数组,变成一维数组
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23])
arr.flatten()
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23])
arr.flatten('F') #纵向展平
array([ 0,  4,  8, 12, 16, 20,  1,  5,  9, 13, 17, 21,  2,  6, 10, 14, 18,
       22,  3,  7, 11, 15, 19, 23])

组合数组

arr3 = np.array([5,6,7,8])
np.hstack((arr1,arr3)) #堆栈方式(下同),横向
array([1, 2, 3, 4, 5, 6, 7, 8])
np.vstack((arr1,arr3)) #纵向
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
np.concatenate((arr1,arr3),axis=0) #axis=0为横向,=1是纵向
array([1, 2, 3, 4, 5, 6, 7, 8])

切割数组

np.hsplit(arr3,2) #对arr3进行切割,切割成2个数组,按行拆
[array([5, 6]), array([7, 8])]
np.vsplit(arr2,2) #对arr3进行切割,切割成2个数组,按列拆
[array([[1, 2, 3],
        [4, 4, 5]]), array([[ 6,  7,  7],
        [ 8,  9, 10]])]
np.split(arr2,2,axis=0)
[array([[1, 2, 3],
        [4, 4, 5]]), array([[ 6,  7,  7],
        [ 8,  9, 10]])]
numpy生成数组
np.random.random(100) #随机生成自定义个数的数组
array([0.95167995, 0.18096859, 0.59236618, 0.02925964, 0.68336809,
       0.23402786, 0.40671182, 0.51379527, 0.32574714, 0.43352915,
       0.19183761, 0.84768984, 0.38245797, 0.29251648, 0.33354924,
       0.56742841, 0.94358695, 0.35471753, 0.39552121, 0.81761974,
       0.56879868, 0.10603172, 0.65322348, 0.36413706, 0.31022328,
       0.90744888, 0.38275878, 0.79197704, 0.39482031, 0.20797927,
       0.41242333, 0.24632201, 0.79073378, 0.15151093, 0.7314409 ,
       0.91980904, 0.9071625 , 0.98319934, 0.68631568, 0.97157336,
       0.40780328, 0.23930906, 0.23163062, 0.97764558, 0.2109298 ,
       0.81922506, 0.49199927, 0.11258715, 0.40692308, 0.16889955,
       0.11970872, 0.93883471, 0.70303988, 0.19425031, 0.61378164,
       0.31978307, 0.35371854, 0.44751128, 0.33404667, 0.75165219,
       0.15446359, 0.86320575, 0.06722929, 0.64939407, 0.01310356,
       0.97779856, 0.33522086, 0.70020603, 0.14096877, 0.76475935,
       0.15503171, 0.05361287, 0.68288931, 0.52869685, 0.2914454 ,
       0.79378387, 0.67397387, 0.57745147, 0.04801953, 0.71848316,
       0.63879409, 0.79271897, 0.86363712, 0.40322004, 0.51856314,
       0.25570039, 0.15941114, 0.82583908, 0.16397461, 0.20660024,
       0.5946275 , 0.03163121, 0.96312469, 0.38119408, 0.78471152,
       0.28384807, 0.63412253, 0.15360871, 0.89758739, 0.34176362])
np.random.randn(10,5) #均匀分布的随机数
array([[-0.36248351, -1.75396469, -0.92900123, -0.49325275, -0.78623546],
       [ 1.54322959, -0.30284396,  1.1177209 , -1.01253766,  1.19030247],
       [-0.45491472, -0.14569622,  0.77666632,  0.22128488,  0.92204289],
       [ 0.20691927,  0.04894845, -0.56984724,  1.07893663,  0.46180285],
       [ 1.56787737,  0.46211699, -0.35937262, -0.25554625,  0.64089709],
       [-1.49985201,  0.94343963,  0.24150247, -1.17155756,  0.0493493 ],
       [-0.65965358,  1.78137852, -1.56151111,  1.05960132, -0.09131252],
       [-1.77035465,  0.23162106, -0.67243185, -0.97087122, -0.18996355],
       [-0.83800999, -1.50207623, -0.97118001,  0.71349047, -0.89711232],
       [-0.06373938,  0.63000994, -1.1889798 ,  0.2600065 , -0.50085781]])
np.random.randint(2,10, size=[2,5]) #随机生成范围2到10,2行5列的数组
array([[2, 2, 9, 2, 8],
       [2, 6, 4, 2, 2]])

Numpy矩阵操作

matr1 = np.mat("1 2 3; 4 5 6; 7 8 9")
matr1
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
matr2 = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
matr2
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
matr1 * 3
matrix([[ 3,  6,  9],
        [12, 15, 18],
        [21, 24, 27]])
matr1 + matr2
matrix([[ 2,  4,  6],
        [ 8, 10, 12],
        [14, 16, 18]])
matr1 * matr2
matrix([[ 30,  36,  42],
        [ 66,  81,  96],
        [102, 126, 150]])
np.dot(matr1,matr2) #矩阵相乘
matrix([[ 30,  36,  42],
        [ 66,  81,  96],
        [102, 126, 150]])
matr1.T #转置矩阵
matrix([[1, 4, 7],
        [2, 5, 8],
        [3, 6, 9]])
matr1.H #转置矩阵
matrix([[1, 4, 7],
        [2, 5, 8],
        [3, 6, 9]])
matr1.I #查看逆矩阵
matrix([[ 3.15251974e+15, -6.30503948e+15,  3.15251974e+15],
        [-6.30503948e+15,  1.26100790e+16, -6.30503948e+15],
        [ 3.15251974e+15, -6.30503948e+15,  3.15251974e+15]])

练习

X1 = np.random.randint(0,1, size=[3,100])
W1 = np.random.randint(0,1, size=[5,3])
b1 = np.zeros((5,1))
W2 = np.random.randint(0,1, size=[2,5])
b2 = np.zeros((2,1))
A1 = np.dot(W1,X1) + b1
A1
array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0.]])
A2 = np.dot(W2,A1) + b2
A2.shape
(2, 100)

Numpy统计分析

arr4 = np.array([[3,7],[9,1]])
arr4
array([[3, 7],
       [9, 1]])
arr4.sort()
arr4
array([[3, 7],
       [1, 9]])
arr4.sort(axis=0) #axis代表排序的方向
arr4
array([[1, 7],
       [3, 9]])
arr5 = np.array([4,3,2,1])
arr5.argsort() #返回值为重新排序值的下标
array([3, 2, 1, 0], dtype=int64)
nm = ('a','b','c','c')
dv = ('z','x','y','o')

ind = np.lexsort((dv,nm))
print([nm[i]+","+dv[i] for i in ind])
['a,z', 'b,x', 'c,o', 'c,y']
arr6 = np.array([1,1,2,2,3,3]) 
np.unique(arr6) # 找出数组唯一值并返回排序
array([1, 2, 3])
np.tile(arr6,3)
array([1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3])
np.repeat(arr6, 3, axis=0)
array([1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3])
arr2.sum(axis=0) #列求和
array([19, 22, 25])
arr2.sum(axis=1) #行求和
array([ 6, 13, 20, 27])
arr6.argmax() #数组中最大元素的下标
4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值