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