Python numpy(ndarray 随机数组 常用操作 线性方程组和矩阵运算)

关键词:开源 数据计算扩展
功能:ndarry 多维操作 线性代数
官网:www.numpy.org


安装:

pip install numpy


1、ndarray


import numpy as np

def main():
    list = [[1,3,5],[2,4,6]]
    print(type(list))
    n_list = np.array(list)
    print(type(n_list))

    n_list = np.array(list,dtype=np.float)
    #指定数据类型,bool int int8 int16 int32 int64 int128 uint8 uint16 uint32 ... uint128 float float16 float32 complex64

    print(n_list.shape)#(2, 3) 2行3列

    print(n_list.ndim)#维数 2

    print(n_list.dtype)  # 数据类型 float64


    print(n_list.itemsize)#数据元素的大小

    print(n_list.size)#数据元素的个数
if __name__ == "__main__":
    main()


2、一些数组

    print(np.zeros([2,4]))#生成2行4列初值为0的数组

    print(np.ones([3,5]))#生成3行5列初值为1的数组

    print("Rand:")
    #不带n的为服从均匀分布的随机数
    print(np.random.rand(2,4)) #生成2行4列初值为0-1之间的随机数的数组

    print(np.random.rand())#生成一个0-1之间的随机数

    print(np.random.randint(1,10))#生成一个1-10之间的整数

    print(np.random.randint(1, 10,3))  # 生成3个1-10之间的整数

    print(np.random.randn())  # 生成一个服从标准正态分布的随机数

    print(np.random.randn(2,4))  # 生成2行4列服从标准正态分布的随机数

    print(np.random.choice([10,20,30])) #生成从指定集合里面选出的随机数

    print("Distribute:")

    print(np.random.beta(1,10,3))#生成3个服从beta分布的1-10之间的随机数


3、常用操作


print("oprations:")

    print(np.arange(1,11))#生成【1,10】之间的数  [ 1  2  3  4  5  6  7  8  9 10]

    list2 = np.arange(1,11).reshape([2,5])
    print(list2)#将其调整为2行5列  [[ 1  2  3  4  5] [ 6  7  8  9 10]]

    print(np.exp(list2))
    print(np.exp2(list2))
    print(np.sqrt(list2))
    print(np.sin(list2))
    print(np.log(list2))

    list3 = np.array(
    [
        [
            [1,2,3,4],
            [4,5,6,7]
        ],
        [
            [7,8,9,10],
            [10,11,12,13]
        ],
        [
            [14,15,16,17],
            [18,19,20,21]
        ]
    ])
    print(list3.sum())
    print(list3.sum(axis=0))
    '''
    axis=0
    [
        [1,2,3,4],[4,5,6,7]
    ]
    +
    [
        [7,8,9,10],[10,11,12,13]
    ]
    +
    [
        [14,15,16,17],[18,19,20,21]
    ]
    =
    [
        [1+7+14,2+8+15,3+9+16,4+10+17],[4+10+18,5+11+19,6+12+20,7+13+21]
    ]
    =
    [
        [22,25,28,31],[32,35,38,41]
    ]
    '''
    print(list3.sum(axis=1))
    '''
       axis=1
       [
           [1,2,3,4],[4,5,6,7]
       ]
       +
       [
           [7,8,9,10],[10,11,12,13]
       ]
       +
       [
           [14,15,16,17],[18,19,20,21]
       ]
       =
       [
            1+4,2+5,3+6,4+7
       ]
       [
            7+10,8+11,9+12,10+13
       ]
       [
            14+18,15+19,16+20,17+21
       ]
       =
        [ 5  7  9 11]
        [17 19 21 23]
        [32 34 36 38]
       '''

    print(list3.sum(axis=2))
    '''
        axis=2
       [
           [1,2,3,4],[4,5,6,7]
       ]
       +
       [
           [7,8,9,10],[10,11,12,13]
       ]
       +
       [
           [14,15,16,17],[18,19,20,21]
       ]
       =
       [
            [1+2+3+4,4+5+6+7]
       ]
       [
            7+8+9+10,10+11+12+13
       ]
       [
            14+15+16+17,18+19+20+21
       ]
       =
        [10 22]
         [34 46]
         [62 78]
    
    '''
   # print(list3.sum(axis=3))
    #报错
    print("类似的:")
    print(list3.max(axis=1))
    print(list3.min(axis=0))


    list4 = np.array([1,2,3,4])
    list5 = np.array([5,3,2,3])
    print("Add")
    print(list4 + list5)
    print("ub")
    print(list4 - list5)
    print("Mul")
    print(list4 * list5)
    print("Div")
    print(list4 / list5)

    print("Square")
    print(list4**2)

    print("DOt")
    print(np.dot(list4.reshape([2,2]),list5.reshape(2,2)))

    print("向array中追加数据")
    print(np.concatenate((list4,list5),axis=0))
    print(np.vstack((list4,list5)))
    print(np.hstack((list4, list5)))

    print("拆分array")
    print(np.split(list4,2))

4、线性方程组和矩阵运算

print("线性方程组和矩阵运算")



    print(np.eye(3))#生成3介单位矩阵

    list6 = np.array([
        [1.,2.],[3.,4.]
    ])

    print("矩阵的逆")
    print(inv(list6))

    print("转置矩阵")
    print(list6.transpose())

    print("行列式")
    print(det(list6))

    print("特征值和特征向量")
    print(eig(list6))
    '''
    (array([-0.37228132,  5.37228132]), array([[-0.82456484, -0.41597356],
       [ 0.56576746, -0.90937671]]))
       第一个array表示特征值,第二个array表示特征向量
    '''

    print("解方程组")
    y = np.array([[5.],[7.]])
    print(solve(list6,y))
    '''
        list6 = np.array([
        [1.,2.],[3.,4.]
    ])
         y = np.array([[5.],[7.]])
         即 
         x1 + 2x2 = 5
         3x1 + 4x2 = 7
        解得x1=-3 x2=4
    '''


5、其它应用

print("信号处理FFT")
    print(np.fft.fft(np.array([1,1,1,1,1,1,1,1,1,1,1])))
    print("相关系数")

    print(np.corrcoef([1,0,1],[0,2,1]))



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值