zoukankan      html  css  js  c++  java
  • numpy

    numpy元素的属性

    numpy的所有值都有以下几个属性

    A = np.arange(12).reshape(3, 4).astype(np.float32)
    
    print(A.ndim)
    print(A.shape)
    print(A.size)
    print(A.dtype)
    print(A.itemsize)
    
    # 输出结果为
    # 2
    # (3, 4)
    # 12
    # float32
    # 4
    

    A.ndim
    数组轴的个数,在python的世界中,轴的个数被称作秩

    A.shape
    数组的维度。

    A.size
    数组元素的总个数。

    A.dtype
    元素的数据类型。

    A.itemsize
    数组中每个元素的字节大小。

    生成数列

    指定值的增量

    data = np.arange(10, 30, 5)
    print(data)  # [10 15 20 25]
    

    指定值的个数

    data = np.linspace(1, 10, 5)
    print(data) # [  1.     3.25   5.5    7.75  10.  ]
    

    生成矩阵

    data = np.array([[2, 3, 4], [4, 5, 6]], dtype=np.float32)
    print(data)
    # [[ 2.  3.  4.]
    #  [ 4.  5.  6.]]
    

    生成全是0的矩阵

    data = np.zeros((3, 4))
    print(data)
    # [[ 0.  0.  0.  0.]
    #  [ 0.  0.  0.  0.]
    #  [ 0.  0.  0.  0.]]
    

    生成全是1的矩阵

    data = np.ones((3, 4))
    print(data)
    # [[ 1.  1.  1.  1.]
    #  [ 1.  1.  1.  1.]
    #  [ 1.  1.  1.  1.]]
    

    生成随机数据

    随机生成0~1之间的数

    data = np.random.random()
    print(data) #0.01447623686510957
    

    随机生成指定范围内的浮点数

    data = np.random.uniform(10,20)
    print(data)
    # 14.646829941471552
    

    随机整数

    data = np.random.randint(10,20)
    print(data)
    # 17
    

    随机生成一个矩阵

    data = np.random.random((3,4))
    print(data)
    # [[ 0.77829489  0.63959774  0.83723733  0.95292845]
    #  [ 0.78949057  0.38655045  0.79205805  0.06847395]
    #  [ 0.5284635   0.95181041  0.39267602  0.23638718]]
    

    多维矩阵

    data = np.random.random((2,3,4))
    print(data)
    # [[[ 0.36605927  0.47719931  0.16654015  0.17585629]
    #   [ 0.66085507  0.09883734  0.22603851  0.91388161]
    #   [ 0.33416014  0.82187631  0.91063299  0.25781208]]
    # 
    #  [[ 0.56585862  0.09606677  0.84916434  0.26007262]
    #   [ 0.16145394  0.61120144  0.75447741  0.40179179]
    #   [ 0.55887648  0.45416114  0.17644248  0.43142769]]]
    

    合并

    A = np.array([1, 1, 1])
    B = np.array([2, 2, 2])
    #纵向合并
    print(np.vstack((A, B)))
    #横向合并
    print(np.hstack((A, B)))
    # [[1 1 1]
    #  [2 2 2]]
    #
    # [1 1 1 2 2 2]
    

    增加维度

    添加一个横向的维度

    A = np.array([1, 1, 1])
    B = A[np.newaxis, :]
    print(A.shape)
    print(B.shape)
    print(B)
    # (3,)
    # (1, 3)
    # [[1 1 1]]
    

    添加一个纵向的维度

    A = np.array([1, 1, 1])
    B = A[:,np.newaxis]
    print(A.shape)
    print(B.shape)
    print(B)
    # (3,)
    # (3, 1)
    # [[1]
    #  [1]
    #  [1]]
    

    分割

    A = np.arange(12).reshape(3, 4)
    print(A)
    #横向分割
    print(np.vsplit(A, 3))
    #纵向分割
    print(np.hsplit(A, 2))
    #可以在参数中指定分割哪个坐标
    print(np.split(A, 3, axis=0))
    print(np.split(A, 2, axis=1))
    #不等量分割
    print(np.array_split(A, 3, axis=1))
    

    深层拷贝

    在numpy中直接用"="号赋值,相当于赋予的是指针,赋值前后的"两个"变量是同"一个"变量.比如,下面的变量a,b,改变a,b也会跟着变化.

    a = np.array([1, 2, 3])
    b = a
    a[0] = 666
    print(a)
    print(b)
    #[666   2   3]
    #[666   2   3]
    

    如果想要两个变量不关联,需要这样拷贝

    b = a.copy()
    

    运算

    numpy中矩阵的加法减法的运算和普通的加减运算相同,但是矩阵乘法的运算需要用dot函数,如下

    A = np.array([[2, 3],
                  [4, 7]])
    B = np.array([[1, 2],
                  [3, 4]])
    print(A + B)
    print(A - B)
    print(np.dot(A, B))
    
    # [[ 3  5]
    #  [ 7 11]]
    #
    # [[1 1]
    #  [1 3]]
    #
    # [[11 16]
    #  [25 36]]
    

    索引与切片

    numpy中的索引与切片功能比python中的切片更加强大

    索引多维数组

    data = np.random.random((3,4,5))
    print(data[0,2,3])
    
     
    TIM截图20171127115021.png

    索引多维数组的时候也可以用切片

    data = np.random.random((3,4,5))
    print(data[1,:,3])
    print(data[:2,:,3])
  • 相关阅读:
    leetcode 673. 最长递增子序列的个数 java
    leetcode 148. 排序链表 java
    leetcode 98. 验证二叉搜索树 java
    leetcode 29. 两数相除 java
    leetcode 234. 回文链表 java
    Valid Palindrome LeetCode Java
    Single Number II LeetCode Java
    Single Number LeetCode java
    Search in Rotated Sorted Array II LeetCode Java
    Search in Rotated Sorted Array leetcode java
  • 原文地址:https://www.cnblogs.com/xuecaichang/p/10624106.html
Copyright © 2011-2022 走看看