任意维度reshape
原问题:https://leetcode-cn.com/problems/reshape-the-matrix/
import numpy as np
from collections import Iterable
def flatten(array,fetcher = []):
if isinstance(array,Iterable):
for item in array:
flatten(item,fetcher)
else:
fetcher.append(array)
return fetcher
def revital(vector,new_shape):
if len(new_shape) == 1:
return vector
res = []
each_row = []
for item in vector:
each_row.append(item)
if len(each_row) == new_shape[-1]:
res.append(each_row)
each_row = []
return revital(res,new_shape[:-1])
def reshape(array,new_shape):
old_size = 1
temp = array
while isinstance(temp,Iterable):
old_size *= len(temp)
temp = temp[0]
new_size = 1
for dim in new_shape:
new_size *= dim
if new_size!=old_size:
return array
arr_flatten = flatten(array)
arr_rivital = revital(arr_flatten,new_shape)
return arr_rivital
if __name__ == '__main__':
a = np.arange(24).reshape(2,3,4)
a = a.tolist()
print(reshape(a,(6,4)))