zoukankan      html  css  js  c++  java
  • numpy数组的计算

    1、数组的形状

    查看数组的形状:

    import numpy as np
    
    a = np.array([[1, 2, 3, 4, 5],
                  [5, 6, 7, 8, 9]])
    print(a.shape)
    

    (2, 5)

    二行五列

    改变数组的形状:

    import numpy as np
    
    a = np.array([[1, 2, 3, 4, 5],
                  [5, 6, 7, 8, 9]])
    print(a.reshape(5, 2))  # 这里注意改变形状所对应的元素个数必须一样 5*2=10个
    

    [[1 2]
    [3 4]
    [5 5]
    [6 7]
    [8 9]]

    再比如:

    import numpy as np
    
    a = np.arange(24)
    print(a.reshape(2, 3, 4))  # 这里注意改变形状所对应的元素个数必须一样 2*3*4=24个
    

    [[[ 0 1 2 3]
    [ 4 5 6 7]
    [ 8 9 10 11]]

    [[12 13 14 15]
    [16 17 18 19]
    [20 21 22 23]]]

    转化为一维度数组:

    import numpy as np
    
    a = np.arange(24)
    print(a.flatten())
    

    [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

    2、数组和数的计算

    numpy具有广播机制,在运算过程中,加减乘除的值被广播到所有元素上

    广播机制的理解:我通过广播说一句话,大家全部听见来进行我说的操作

    数组与数的内容中:乘除和线代内容差不多(除法稍微注意即可),但加减略有不同

    import numpy as np
    
    a = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])
    print(a+1)
    

    [[ 2 3 4]
    [ 5 6 7]
    [ 8 9 10]]

    关于数组与数组的加减乘除中,只需要记住:

    image.png

    比如:

    import numpy as np
    
    a = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])  # 3*3
    
    b = np.array([[9, 8, 7]])  # 1*3
    print(a*b)
    

    [[ 9 16 21]
    [36 40 42]
    [63 64 63]]

    import numpy as np
    
    a = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])  # 3*3
    
    b = np.array([[9, 8, 7],
                  [6, 5, 4]])  # 2*3
    print(a+b)
    

    ValueError: operands could not be broadcast together with shapes (3,3) (2,3)

    3、轴

    了解即可

    在numpy中可以理解为方向,使用0,1,2...数字表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2,2)),有0轴和1轴,对于三维数组(shape(2,2, 3)),有0,1,2轴

    image.png

    image.png

  • 相关阅读:
    有效的字母异位词---简单
    字符串中的第一个唯一字符---简单
    整数反转---简单
    使用httpServlet方法开发
    servlet生命周期
    tomcat_user文件的1配置
    selvlet入门自己部署(sevlet接口实现)
    数据库mysql实战
    tomcat的熟悉目录结构
    虚拟主机
  • 原文地址:https://www.cnblogs.com/wangzheming35/p/15344762.html
Copyright © 2011-2022 走看看