《NumPy快速入门》10 - 矩阵操作

128 阅读1分钟

拼接

image.png

a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
b = np.array([[1,2,3,4], [5,6,7,8]])
c = np.array([[1,2], [3,4], [5,6]])

图示操作仅适用于矩阵堆叠或向量堆叠,而一维数组和矩阵的混合堆叠只有通过vstack才可实现,hstack会导致维度不匹配错误。

  • 一维数组和矩阵的混合堆叠

因为前文提到将一维数组作为行向量,而不是列向量。为此,可以将其转换为行向量,或使用专门的column_stack函数执行此操作:

image.png

np.vstack((a, [ 1,  2,  3,  4]))
np.hstack((a, np.array([ 1,  3,  4])[:, None]))
np.column_stack((a, [ 1,  3,  4]))

切分

image.png

np.hsplit(np.hstack((a, c)), [4])
np.vsplit(np.vstack((a, b)), [3])

复制

image.png

np.tile(a, [2,3])
a.repeat(3, axis=1)
a.repeat(2, axis=0)

删除

image.png

np.delete(a, [1,3], axis=1)
np.delete(a, 0, axis=0)
np.delete(a, np.s_[1:-1], axis=1)
np.delete(a, slice(1, -1), axis=1)

插入

image.png

np.insert(a, [1,3], 1, axis=1)
np.insert(a, 0, -1, axis=0)
np.insert(a, [2], c, axis=1)

image.png

np.append(a, np.zeros((3,2)), axis=1)
np.append(a, np.ones((3, 4)), axis=0)

image.png

np.pad(a, 1)
np.pad(a, ((1,2), (1,2)), constant_values=1)