通常,数据科学家被要求在Python中执行简单的矩阵运算,这应该很简单,但许多人会偏离正轨。
本文将介绍面试中经常出现的4个Numpy/matrix问题,并用Python编写代码。
问题1:
给定4x4 Numpy矩阵,如何反转矩阵?
# 步骤0:构造一个4*4 Numpy矩阵
import numpy as np
matrix = np.arange(1,17).reshape(4,4)
print(matrix)
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]]
旁注,np.arange(1,17) 返回一个Numpy数组,并*reshape(4,4)生成一个44矩阵。
# 步骤1:展平numpy数组
matrix_flat = matrix.flatten()
matrix_flat
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
有两种方法可以根据数据类型展平矩阵。对于Numpy数组,我们使用np.array.flatten() ;对于非数组矩阵,我们用matrix.ravel(). 请试一试。
# 步骤2:将元素读入一个新的矩阵
matrix_reversed = matrix_flat[::-1]
matrix_reversed
array([16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1])
展平后,我们从最后一个元素开始向后读取矩阵。
# 步骤3: 将矩阵重塑为4*4矩阵
matrix_reversed.reshape(4,4)
最后,我们重塑矩阵并将其转换回4*4矩阵,如下所示:
array([[16, 15, 14, 13],
[12, 11, 10, 9],
[ 8, 7, 6, 5],
[ 4, 3, 2, 1]])
Numpy数组或矩阵的独特属性是,必须在