Bootstrap

羟基numpy自学(三)

Numpy 矩阵的合并

  • 垂直合并:
np.vstack((array1, array2, array3, ...))

注意:array1和array2的长度要一致。

  • 水平合并:
np.hstack((array1, array2, array3, ...))

注意:array1和array2的宽度要一致。
集中放图:
图一

  • 神奇的np.concatenate:
    这个语法可以通过参数axis的设定决定是垂直合并还是水平合并,axis = 0,垂直合并, axis = 1,水平合并。
np.concatenate((array1, array2, ...), axis = 1 or 0)

矩阵的升阶:

  • 一维矩阵不能进行array.T的操作,如要进行矩阵转置,就要先将矩阵升维了:
array = array[np.newaxis, :]
or
array = array.[:, np.newaxis]

我们先定义一个一维矩阵array:
tyu
发现其并不能进行矩阵的转置。
接下来我们对array进行升维:
图2
就能进行转置操作了。
注意:请仔细区别冒号的位置和对应的结果。

矩阵的分割

  • 垂直分割:
arry2, array3, array4 , ... , arrrayn = np.vsplit(array, n)
  • 水平分割:
array2, array3, ... , arrayn = np.hsplit(array, n)
  • 参数决定分割类型:
array2, array3, ... , arrayn = np.split(array, n, axis = 0 or 1)

axis = 0为垂直分割,axis = 1为水平分割。

  • 上述三种方法都有一个缺陷,只能进行等分分割。
    如果要进行不等分分割,下面有这么一个函数:
np.array_split(array, n, axis = 0 or 1)

矩阵的两种拷贝方式

  • 浅拷贝:即两个标签指向同一块内存地址
    运行以下代码:
array1 = np.array([1, 2, 3])
array2 = array1
array2[0] = 10
print(array1)

结果为:
11
即array2改变,array1同样改变,它们本来就是指向的同一个内存地址嘛。

  • 深拷贝:即为标签新建一块内存区域存放copy的数据
array1 = np.array([1, 2, 3])
array2 = array1.copy()
array2[0] = 10
print(array1)

输出结果:
111
array1的值并没有改变。

;