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:
发现其并不能进行矩阵的转置。
接下来我们对array进行升维:
就能进行转置操作了。
注意:请仔细区别冒号的位置和对应的结果。
矩阵的分割
- 垂直分割:
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)
结果为:
即array2改变,array1同样改变,它们本来就是指向的同一个内存地址嘛。
- 深拷贝:即为标签新建一块内存区域存放copy的数据
array1 = np.array([1, 2, 3])
array2 = array1.copy()
array2[0] = 10
print(array1)
输出结果:
array1的值并没有改变。