python实现矩阵行列扩展

方法一:用row_stack、column_stack


def matrixExtend(mtx):
    r_m = np.ones(mtx.shape[1]) #根据每个矩阵的列数创建矩阵大小来扩展行
    c_m = np.ones(150)
    for i in range(mtx.shape[1]):
        r_m[i] = np.NaN
    for i in range(150):
        c_m[i] = np.NaN
    while mtx.shape[0] < 150:
        mtx = np.row_stack((mtx, r_m))
    print("行扩展的")
    print(mtx)
    while mtx.shape[1] < 150:
        mtx = np.column_stack((mtx, c_m.T)) #注意先将向量转置后再存储
    print("行列扩展后的")
    print(mtx)
    return mtx

方法二:用r_、c_。注意用r_进行行扩展时要把扩展的矩阵一定是用二维的,如rm,而c_进行列扩展时一维即可,如cm

# 先初始化两个单行单列的空矩阵用于矩阵扩展,扩展的数据全部填充为空值
def matrixExtend(mtx):
    rm = np.arange(mtx.shape[1]) + np.arange(1)[:, np.newaxis]  #用于扩展的行矩阵,前面是列数,后面行数
    rm = rm.astype(float)  #矩阵类型转换int到float
    for i in range(rm.shape[0]):
        for j in range(rm.shape[1]):
            rm[i][j] = np.NaN
    cm = np.ones(150)   #用于扩展的列向量
    for i in range(150):
        cm[i] = np.NaN
    while mtx.shape[0] < 150:
        mtx = np.r_[mtx, rm]
    while mtx.shape[1] < 150:
        mtx = np.c_[mtx, cm]
    mtx = np.round(mtx,4) #扩展后发现数据的经度变化了,设置保留4位小数
    return mtx

你可能感兴趣的:(python基本操作,python,矩阵)