• python numpy学习


    以下代码来源于本博文作者观看大神视频并纯手敲。

    目录

    numpy的属性
    创建array
    numpy的运算1
    随机数生成以及矩阵的运算2
    numpy的索引
    array合并
    array分割
    numpy的浅拷贝和深拷贝

    numpy的属性

    import numpy as np
    
    array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    print(array)
    print(array.ndim)  # 维度 2
    print(array.shape)  # 形状 (3, 3)
    print(array.size)  # 大小 9
    print(array.dtype)  # 元素类型 int32
    

    numpy创建array

    import numpy as np
    
    a = np.array([1, 2, 3], dtype=np.int32)
    print(a.dtype)  # int32
    b = np.array([1, 2, 3], dtype=np.float)
    print(b.dtype)  # float64
    c = np.array([1, 2, 3])
    d = np.array([[1, 2, 3], [4, 5, 6]])  
    print(d)  # 二维矩阵
    zero = np.zeros((2, 3))
    print(zero)  # 生成两行三列全为零的矩阵
    one = np.ones((3, 4))
    print(one)  # 生成三行四列全为1的矩阵
    empty = np.empty((3, 2))
    print(empty)  # 生成三行两列全都接近于零的矩阵(但不等于0)
    e = np.arange(10)
    print(e)
    f = np.arange(4, 12)
    print(f)  # [ 4  5  6  7  8  9 10 11]
    g = np.arange(1, 20, 3)
    print(g)
    h = np.arange(8).reshape(2, 4)
    print(h)  # 重新定义矩阵形状
    

    numpy矩阵的运算

    import numpy as np
    
    arr1 = np.array([[1, 2, 3], [4, 5, 6]])
    arr2 = np.array([[1, 1, 2], [2, 3, 3]])
    print(arr1 + arr2)  # 按照位置相加
    print(arr1 - arr2)
    print(arr1 * arr2)
    print(arr1 ** arr2)
    print(arr1 / arr2)
    print(arr1 % arr2)
    print(arr1 // arr2)
    print(arr1 + 2)  # 所有的元素都加2
    arr3 = arr1 > 3
    print(arr3)  # 判断哪些元素大于3
    arr4 = np.ones((3, 5))
    print(arr4)
    print(arr1)
    res = np.dot(arr1, arr4)  # 矩阵的乘法
    print(res)
    res1 = arr1.dot(arr4)  # 矩阵的乘法
    print(res1)
    print(arr1.T)  # 转置矩阵
    print(np.transpose(arr1))  # 转置矩阵
    

    随机数生成以及矩阵的运算2

    import numpy as np
    
    sample1 = np.random.random((3, 2))  # 生成3行2列的从0到1的随机数
    print(sample1)
    sample2 = np.random.normal(size=(3, 2))  # 生成3行2列符合标准正太分布的随机数
    print(sample2)
    sample3 = np.random.randint(0, 10, size=(3, 2))  # 生成3行2列的从0-10的随机整数
    print(sample3)
    print(np.sum(sample1))  # 求和
    print(np.min(sample1))  # 求最小值
    print(np.sum(sample1, axis=0))  # 对每一列进行求和
    print(np.sum(sample1, axis=1))  # 对每一行进行求和
    print(np.argmin(sample1))  # 求最小值的索引
    print(np.argmax(sample1))  # 求最大值的索引
    print(np.mean(sample1))  # 求平均值
    print(sample1.mean())  # 求平均值
    print(np.median(sample1))  # 求中位数
    print(np.sqrt(sample1))  # 开方
    sample4 = np.random.randint(0, 10, size=(1, 10))
    print(sample4)
    print(np.sort(sample4))  # 排序:按行升序
    print(np.sort(sample1))
    print(np.clip(sample4, 2, 7))  # 小于2的变成2,大于7的变成7
    

    numpy的索引

    import numpy as np
    
    arr1 = np.arange(2, 14)
    print(arr1)  # [ 2  3  4  5  6  7  8  9 10 11 12 13]
    print(arr1[2])  # 4
    print(arr1[1: 4])  # [3 4 5]
    print(arr1[2: -1])  # [ 4  5  6  7  8  9 10 11 12]
    print(arr1[: 5])  # [2 3 4 5 6]
    print(arr1[-2:])  # [12 13]
    arr2 = arr1.reshape(3, 4)
    print(arr2)  # 
    print(arr2[1])  # [6 7 8 9]
    print(arr2[1][1])  # 7
    print(arr2[1, 2])  # 8
    print(arr2[:, 2])  # [ 4  8 12] 所有行,第2列
    for i in arr2:  # 迭代行
    	print(i)
    for i in arr2.T:  # 迭代列
    	print(i)
    for i in arr2.flat:  # 迭代一个个元素
    	print(i)
    

    array的合并

    import numpy as np
    
    arr1 = np.array([1, 2, 3])
    arr2 = np.array([4, 5, 6])
    arr3 = np.vstack((arr1, arr2))  # 垂直合并
    print(arr3)
    print(arr3.shape)
    arr4 = np.hstack((arr1, arr2))  # 水平合并
    print(arr4)  # [1 2 3 4 5 6]
    print(arr4.shape)
    arrv = np.vstack((arr1, arr2, arr3))
    print(arrv)
    arrh = np.hstack((arr1, arr2, arr4))
    print(arrh)
    arr = np.concatenate((arr1, arr2, arr1))  # 合并
    print(arr)
    arr = np.concatenate((arr3, arrv), axis=0)  # 垂直合并。合并的array维度要相同,array形状要匹配,axis=0纵向合并
    print(arr)
    arr = np.concatenate((arr3, arr3), axis=1)  # 水平合并
    print(arr)
    print(arr1.T)  # 一维的array不能转置
    print(arr1.shape)  # (3,)
    arr1_1 = arr1[np.newaxis, :]
    print(arr1_1)  # [[1 2 3]]
    print(arr1_1.shape)  # (1, 3)
    print(arr1_1.T)
    arr1_2 = arr1[:, np.newaxis]
    print(arr1_2)
    print(arr1_2.shape)  # (3, 1)
    arr1_3 = np.atleast_2d(arr1)
    print(arr1_3)  # [[1 2 3]]
    print(arr1_3.T)
    

    array分割

    import numpy as np
    
    arr1 = np.arange(12).reshape((3, 4))
    print(arr1)
    arr2, arr3 = np.split(arr1, 2, axis=1)  # 水平方向分割,分成2份
    print(arr2)
    print(arr3)
    arr4, arr5, arr6 = np.split(arr1, 3, axis=0)  # 垂直方向分割,分成2份
    print(arr4)
    print(arr5)
    print(arr6)
    arr7, arr8, arr9 = np.array_split(arr1, 3, axis=1)  # 水平方向分割成3份,不等分割
    print(arr7)
    print(arr8)
    print(arr9)
    arrv1, arrv2, arrv3 = np.vsplit(arr1, 3)  # 垂直分割
    print(arrv1)
    print(arrv2)
    print(arrv3)
    arrh1, arrh2 = np.hsplit(arr1, 2)  # 水平分割
    print(arrh1)
    print(arrh2)
    

    numpy的浅拷贝和深拷贝

    import numpy as np
    
    arr1 = np.array([1, 2, 3])
    arr2 = arr1  # 引用赋值,共享一块内存,浅拷贝
    arr2[0] = 5  
    print(arr1)
    print(arr2)
    arr3 = arr1.copy()  # 深拷贝
    arr3[0] = 10
    print(arr1)
    print(arr3)
    

    转载请注明博文出处。

  • 相关阅读:
    HDU_1711 Number Sequence(KMP)
    快速排序+归并排序
    贪心算法
    HDU_1496 Equations && POJ_1840 Eqs(Hash)
    POJ_1328 Radar Installation(贪心)
    HDU_1055 && POJ_2054 Color a Tree(贪心)
    HDU_1754 I Hate It (线段树)
    哈希(Hash)表学习笔记
    jQuery插件datepicker的使用详解
    json总结
  • 原文地址:https://www.cnblogs.com/sirxy/p/11795530.html
Copyright © 2020-2023  润新知