leetcode《四》 改變矩陣的形狀

2021-08-01 02:37:10 字數 1650 閱讀 1037

改變輸入矩陣的形狀(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)

結果:

形參的數值改變不會改變實參的值

輸入a b兩個整數,用指標按先大後小的順序輸出a和b 正確 include void swap int p1,int p2 void main printf max d nmin d n max,min 錯誤 如下 1 void swap int p1,int p2 2 void swap int ...

3 2矩陣大小及結構的改變

1.根據運算時不同情況和需要,矩陣大小和結構的改變主要的方式有旋轉矩陣 改變矩陣的維度 刪除矩陣元素等等,matlab中提供了矩陣旋轉與矩陣維度改變的函式 矩陣旋轉與改變維度的函式 函式名稱 函式功能 fliplr a 矩形每一行均進行逆序排序 flipud a 矩陣每一列均進行逆序排列 flipd...

matlab 矩陣大小及結構的改變

函式名稱 函式功能 fliplr a 矩陣每一行均進行逆序排列 flipud a 矩陣每一列軍進行逆序排列 flipdim a,dim 生成乙個在dim維矩陣a內的元素交換位置的多維矩陣 rot90 a 生成乙個由矩陣a逆時針旋轉90度而得到的新矩陣 rot90 a,k 生成乙個由矩陣a逆時針旋轉k...