leetcode<四> 改变矩阵的形状

    改变输入矩阵的形状(shape),

    输入为 matrix, r, c. matrix为输入矩阵,r和c分别为输出矩阵的行和列

    如果能转换就输出新的矩阵,如果不能输出就输出原始矩阵

    第一种方法,使用numpy:

    def matrixReshape(self, nums, r, c):
        try:
            return np.reshape(nums, (r, c)).tolist()  # 将数组或者矩阵转换为列表
        except:
            return nums
tolist的目的是将输出转换为列表


    第二中方法:参考leetcode上面大神

    def matrixReshape2(self, nums, r, c):
        A = [x for row in nums for x in row]
        return [A[i*c:(i+1)*c] for i in range(r)] if r*c == len(A) else nums    

A = [x for row in nums for x in row]
将矩阵转换成一个列表,方便后面的访问

 [A[i*c:(i+1)*c] for i in range(r)] 
根据行来计算, 每一行为一个列表,每一行的起始坐标为i*c, 终点坐标为(i+1)*c, i是由range(r)生成的,也就是新的矩阵有r行.


所有代码:

# 改变matrix的shape,
# 输入 matrix, (r. c) r c分别代表新的matrix的行和列
# 如果能转换则输出新的matrix,否则输出原始matrix

import numpy as np
class Solution(object):
    def matrixReshape(self, nums, r, c):
        try:
            return np.reshape(nums, (r, c)).tolist()  # 将数组或者矩阵转换为列表
        except:
            return nums

    def matrixReshape2(self, nums, r, c):
        A = [x for row in nums for x in row]
        return [A[i*c:(i+1)*c] for i in range(r)] if r*c == len(A) else nums

if __name__ == '__main__':
    s = Solution()
    # nums = np.array([[1, 2], [3, 4]])
    # newNum = s.matrixReshape(nums, 1, 4)

    nums = [[1, 2], [3, 4]]

    newNum = s.matrixReshape2(nums, 1, 4)
    print(newNum)
结果:





   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值