普普通通的numpy笔记

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) #从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))   #自动生成数列, 用元组方式  zeros只生成0元素
array([[0., 0., 0.],
       [0., 0., 0.]])
np.eye(3)  #仅在对角线上生成元素为(1)的数组
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  #形状 i*j
(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(0)   #除了0之外都是true
False
np.float(True)  #1,0 与布尔值可转化   默认为浮点型的 0 和 1
1.0
np.float(False)
0.0

数组的索引查找

arr2[0] #用0去查找,定位到第一个行, 因此读取了一行(也是因为arr2是二维数组)    ps:如果是一维数组,则该代码成立
array([1, 2, 3, 4])
arr2[0][3] #需要再加一个参数,来定位到具体的元素     例子中的0 ,3 指的就是第一行第四个数
4
arr2[1][::2]   #多个索引,间隔取数
array([4, 6])
arr2[:,2] #读取一列的方法
array([ 3,  5,  7, 10])
arr2[2][::-1]    #从后往前连续取
array([10,  9,  8,  7])
arr2[0,0: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)   #arange() == array(range()) 操作基本等同
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)) #堆栈方式   hstack横向拼接  vstack纵向拼接
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)  #0 横向 , 1 纵向
array([1, 2, 3, 4, 5, 6, 7, 8])
np.concatenate((arr1, arr3), axis = 1)  #
array([1, 2, 3, 4, 5, 6, 7, 8])
np.concatenate((arr1, arr3))
array([1, 2, 3, 4, 5, 6, 7, 8])

切割数组

np.hsplit(arr3, 2)   #前一参数为该数组,2为拆分为几部分
[array([5, 6]), array([7, 8])]
np.vsplit(arr2,2)
[array([[1, 2, 3],
        [4, 4, 5]]), array([[ 6,  7,  7],
        [ 8,  9, 10]])]
np.split(arr2, 2, axis=0)  #可直接用spilt来决定切割方向
[array([[1, 2, 3],
        [4, 4, 5]]), array([[ 6,  7,  7],
        [ 8,  9, 10]])]

Numpy生成数组

np.random.random(100)  #随机生成数组
array([0.84383225, 0.31684469, 0.08856711, 0.04319333, 0.86852226,
       0.20791665, 0.49158186, 0.858481  , 0.29135487, 0.0188996 ,
       0.34713081, 0.40762266, 0.23051619, 0.61538688, 0.32449647,
       0.8055476 , 0.62220307, 0.85331657, 0.42171959, 0.22940534,
       0.06994526, 0.14758006, 0.86721907, 0.58740296, 0.47191403,
       0.65336687, 0.8234364 , 0.03793615, 0.17165016, 0.78487349,
       0.36374087, 0.88458454, 0.64747145, 0.65061754, 0.18418836,
       0.80629734, 0.40985309, 0.22310008, 0.18578494, 0.2641264 ,
       0.42551478, 0.8905454 , 0.73879022, 0.47774137, 0.13643535,
       0.08310071, 0.30112218, 0.48287822, 0.56243443, 0.08108347,
       0.50414937, 0.05712337, 0.83302187, 0.19416904, 0.03761042,
       0.68225787, 0.35105037, 0.058352  , 0.96915812, 0.74856777,
       0.37020492, 0.78181459, 0.49192134, 0.2217529 , 0.16114479,
       0.03944376, 0.17294999, 0.86755852, 0.17866927, 0.79347063,
       0.70217067, 0.46860523, 0.95216746, 0.75663194, 0.73213156,
       0.26483869, 0.82492269, 0.36818667, 0.21358502, 0.54310758,
       0.71833282, 0.76036529, 0.61430563, 0.64555748, 0.41857613,
       0.86349082, 0.53584084, 0.86918066, 0.07600797, 0.67556373,
       0.45482433, 0.97359206, 0.26534372, 0.34046382, 0.68647192,
       0.47920051, 0.02582498, 0.88214141, 0.93580284, 0.65094823])
np.random.randn(10,5) #服从均匀分布的生成随机数
array([[-1.16013847,  0.38995915,  0.3061904 , -0.52197148,  1.18770239],
       [-1.78065555, -1.25306603,  1.12116724, -0.06588376, -1.00235648],
       [ 0.57255204,  1.42903828, -0.08233707, -0.40280985, -0.87059519],
       [-1.06024269, -0.27171951, -0.96247977, -0.78904372, -1.90071377],
       [ 1.05302149, -1.31409181, -0.64072261,  0.8135406 , -0.47246574],
       [-1.85405428,  1.50018216,  1.82790837, -0.06712163, -1.18952417],
       [ 0.76151658,  0.24335155, -0.06020579,  4.0438185 ,  0.58687847],
       [-0.16659596, -0.34726012,  0.14048369, -1.43914682,  0.65015638],
       [-1.08442777,  0.68221767,  0.09641345,  0.19797142, -0.76984432],
       [ 0.19865695,  0.77113551,  1.77447236, -0.31251604, -0.25949725]])
np.random.randint(2,10, size = [2,5])   #参数分别为 范围(2——10) 形状   2*5   符合正态分布
array([[5, 5, 5, 5, 9],
       [5, 3, 9, 7, 4]])

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]])

  File "<ipython-input-87-c98555daeefd>", line 1
    matr1 +
           ^
SyntaxError: invalid syntax
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)
print(np.___version__)
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-100-da177e267561> in <module>()
----> 1 print(np.___version__)


AttributeError: module 'numpy' has no attribute '___version__'

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,2,3,1])
arr5.argsort() #argsort函数返回值为重新排序值的下标
array([3, 1, 2, 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)  #重复数列   参数3:重复的次数    整个数组进行重复
array([1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3])
np.repeat(arr6, 2, axis = 0) #重复   每个元素进行重复
array([1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3])
arr2.sum() #全部元素进行求和
66
arr2.sum(axis = 0) #按行方向求和
array([19, 22, 25])
arr2.sum(axis = 1) #按列的方向求和
array([ 6, 13, 20, 27])
arr6.argmax() #最大的下标
4
arr7 = np.array([0.1, 0.9])
arr7.argmax()
1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值