问答详情
源自:2-4 numpy常用操作

本节代码,纯手敲

#encoding=utf-8
import numpy as np
#本节主要讲解对 numpy.array() 数据类型的操作, numpy 中的array 指的的数学中的 矩阵(行列式) matrix
def main():
    lst=[[1,3,5],[2,4,6]]
    print(type(lst)) #<class 'list'>
    np_lst=np.array(lst)
    print(type(np_lst)) #<class 'numpy.ndarray'>
    np_lst=np.array(lst,dtype=np.float)
    #bool,int,int8,int16,int32,int64,int128,uint8,uint16,uint32,uint64,uint128,folat,float16/32/64,complex64/128
    print(np_lst.shape) #(2, 3)  表示数据结构是2行3列
    print(np_lst.ndim)  #2  表示数据结构维度是2
    print(np_lst.dtype) #float64 表示数据类型
    print(np_lst.itemsize) #8 代表每个元素占用的字节是8字节 因为上面的数据类型是float64
    print(np_lst.size) #6 代表总共有的元素个数  此时总共有6*8 = 48个 字节占用

    #2 常用数据 Some Arrays
    print(np.zeros([2,4]))# [[0. 0. 0. 0.] [0. 0. 0. 0.]] 数组初始化  2行4列,元素值都是0
    print(np.ones([3,5]))#[[1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.] [1. 1. 1. 1. 1.]] 数组初始化  3行5列,元素值都是1
    print("Rand:")
    print(np.random.rand(2,4))#[[0.80108456 0.85873572 0.19077216 0.57489116] [0.98368305 0.54631833 0.5836906  0.5840696 ]] 数组初始化  2行4列,元素值都是0-1之间的随机数
    print(np.random.rand()) # 0.5184057738632414 得到一个0-1之间的随机数
    print("RandInt:")
    print(np.random.randint(1,10,3)) #[9 2 1]  得到3个 1-10 之间的随机整数
    print("Randn:")
    print(np.random.randn(2,4)) #[[-0.03133145 -2.40511588  0.41716157 -0.40951324] [-0.16604123 -0.87621271  0.07418091  0.56484108]] 数组初始化, 2行4列,元素值都是 标准正态分布 之间的随机数
    print("Choice:")
    print(np.random.choice([10,20,30]))#30 得到 [10,20,30] 中随机一个元素
    print("Distribute:")
    print(np.random.beta(1,10,5))# [0.27342954 0.06327893 0.05248474 0.37551789 0.18812033] 得到一个贝塔分布,元素个数5
    #3 Array Opes
    print(np.arange(1,11)) # [ 1  2  3  4  5  6  7  8  9 10] 得到一个 1-10 的数组
    print(np.arange(1, 11).reshape([2,5]))  # [[ 1  2  3  4  5] [ 6  7  8  9 10]] 上面的数组重塑 得到一个2行5列的数组
    #np.arange(1,11).reshape([2,-1])  的-1 表示不指定列数量,则会根据 第一个数组arange 的元素总数 除以 行数 得到列数 10/2 =5
    lst = np.arange(1,5).reshape([2,-1])
    print(np.array(lst))#[[1 2] [3 4]]
    print("exp 指数函数操作 底数是自然数e,指数是 lst:")
    print(np.exp(lst)) # [[ 2.71828183  7.3890561 ] [20.08553692 54.59815003]] 指数函数操作 底数是自然数e,指数是 lst
    print("exp2 指数函数操作 底数是2,指数是 lst:")
    print(np.exp2(lst)) #[[ 2.  4.] [ 8. 16.]]指数函数操作 底数是2,指数是 lst
    print("sqrt 开方:")
    print(np.sqrt(lst)) #[[1.         1.41421356] [1.73205081 2.        ]] 开方
    print("sin 三角函数:")
    print(np.sin(lst)) #[[ 0.84147098  0.90929743] [ 0.14112001 -0.7568025 ]]三角函数
    print("log 对数函数操作,底数为自然数e,对数是 lst:")
    print(np.log(lst)) #[[0.         0.69314718] [1.09861229 1.38629436]]对数函数操作,底数为自然数e,对数是 lst

    lst = 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]]
                    ])
    #axis 与数组维数 有关 ,axis的最大值是数组-1,axis取值越大,则数组的深入程度越大
    print(lst.sum(axis=0))#[[22 25 28 31] [32 35 38 41]]
    print(lst.sum(axis=1))#[[ 5  7  9 11] [17 19 21 23] [32 34 36 38]]
    print("Sum(axis=2)")
    print(lst.sum(axis=2))#[[10 22] [34 46] [62 78]]
    print("Max(axis=1)")
    print(lst.max(axis=1))#[[ 4  5  6  7] [10 11 12 13] [18 19 20 21]]
    print("Min(axis=0)")
    print(lst.min(axis=0))#[[1 2 3 4] [4 5 6 7]]
    print(lst.sum()) # 252
    print(lst.max())  # 21
    print(lst.min())  # 1

    lst1 = np.array([10,20,30,40])
    lst2 = np.array([4,3,2,1])
    print("Add 加法")
    print(lst1+lst2) #[14 23 32 41]
    print("Sub 减法")
    print(lst1-lst2) #[ 6 17 28 39]
    print("Mul 乘法")
    print(lst1*lst2) #[40 60 60 40]
    print("Div 除法")
    print(lst1/lst2) #[ 2.5         6.66666667 15.         40.        ]
    print("Square 乘方")
    print(lst1**lst2) #[10000  8000   900    40]
    print("Dot 矩阵乘法") #
    print(np.dot(lst1.reshape([2,2]),lst2.reshape([2,2]))) #[[ 80  50] [200 130]]
    print("Concatenate 追加")
    print(np.concatenate((lst1,lst2),axis=0)) # [10 20 30 40  4  3  2  1]
    print("vstack 垂直追加")
    print(np.vstack((lst1,lst2)))#[[10 20 30 40] [ 4  3  2  1]]
    print("vstack 水平追加")
    print(np.hstack((lst1,lst2)))#[10 20 30 40  4  3  2  1]
    print("split 分成等份")
    print(np.split(lst1,2)) #[array([10, 20]), array([30, 40])]
    print("copy 拷贝")
    print(np.copy(lst1))  #[10 20 30 40]


if __name__=="__main__":
    main()


提问者:小小程序员一枚 2020-07-03 12:02

个回答

  • 小小程序员一枚
    2020-07-03 12:03:17

    如题,手敲代码。

    简介

    #本节主要讲解对 numpy.array() 数据类型的操作, numpy 中的array 指的的数学中的 矩阵(行列式) matrix