zoukankan      html  css  js  c++  java
  • 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)
    

    转载请注明博文出处。

  • 相关阅读:
    C语言 sprintf 函数 C语言零基础入门教程
    C语言 printf 函数 C语言零基础入门教程
    C语言 文件读写 fgets 函数 C语言零基础入门教程
    C语言 文件读写 fputs 函数 C语言零基础入门教程
    C语言 fprintf 函数 C语言零基础入门教程
    C语言 文件读写 fgetc 函数 C语言零基础入门教程
    C语言 文件读写 fputc 函数 C语言零基础入门教程
    C语言 strlen 函数 C语言零基础入门教程
    Brad Abrams关于Naming Conventions的演讲中涉及到的生词集解
    适配器模式
  • 原文地址:https://www.cnblogs.com/sirxy/p/11795530.html
Copyright © 2011-2022 走看看