0%

numpy备忘(2)

  • x.ravel()x.flatten() : 将多为数组降维到1维.ravel()返回元素的引用(对象不一样,但是元素是引用),flatten()返回新的元素。

  • np.meshgrid(x, y) : 返回两个矩阵(X,Y),由这两个矩阵可以将xy定义的空间中的所有点描述出来。所有的点就是网格中的一个个焦点。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 每次刷新一行的感觉
    axis = [-2, 2, -2, 2]
    x0, x1 = np.meshgrid(
    np.linspace(axis[0], axis[1], int(3)).reshape(-1, 1),
    np.linspace(axis[2], axis[3], int(3)).reshape(-1, 1),
    )

    print(x0) # (3,3)
    print(x1) # (3,3)

    # 结果如下:
    [[-2. 0. 2.]
    [-2. 0. 2.]
    [-2. 0. 2.]]

    [[-2. -2. -2.]
    [ 0. 0. 0.]
    [ 2. 2. 2.]]
  • np.r_[a,b [,...]]np.c_[a,b [,...]] : np.c_不是函数,他是一个类!!!这个类重载了[],所以在调用时不能用括号。

    • 对于1维数组,c_把数组当成列向量,返回m行两列;r_把数组当成行向量,返回一行

    • c_就是把a,b当成一列,r_就是把a,b当成一行

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      a = np.array([1,2,3,4])
      b = np.array([5,6,7,8])
      c_c = np.c_[a, b]
      c_r = np.r_[a, b]
      print(c_c, "\n\n", c_r, end="\n\n")

      a = a.reshape(2,2)
      b = b.reshape(2,2)
      c_c = np.c_[a, b]
      c_r = np.r_[a, b]
      print(c_c, "\n\n", c_r, end="\n\n")
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      [[1 5]
      [2 6]
      [3 7]
      [4 8]]

      [1 2 3 4 5 6 7 8]

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

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