```#模拟矩阵预算,支持矩阵转置,修改矩阵大小等
class simNumpyArray(object):
def__init__(self,p)
# ‘’’可以接受列表、元组、range对象等类型的数据,每个元素必须为数字’’’
if type(p) not in (list,tuple,range):
print('输入数据类型错误!')
return
for item in p:
#判断参数类型是否正确,可用系统函数isinstance()
#if isinstance(item,(int,float,complex)):
if type(item) not in (int ,float,complex):
print('数据类型错误')
return
self.__data=[list(p)]
self.__row=1
self.__col=len(p)
def__del__(self)
del self.__data
#下面开始规定方法,一种是改变矩阵大小,一种是转置
def reshape(self,size):
#‘’’size参数给定新矩阵的大小,要求输入必须为列表或者元组,如[row,col]
# 或者(row,col)。row和col其中一个可以为-1,代表自动计算’’’
if not isinstance(size ,(list,tuple)) or len(size)!=2:
print('给定的新矩阵大小输入参数不正确!')
return
if (not isinstance(size[0], int)) or (not isinstance(size[1], int)):
print('矩阵大小请输入整数!')
return
if size[0] != -1 and size[1] != -1 and size[0] * size[1] != self.__row * self.__col:
print('新矩阵大小不正确!')
return
# 当行数或者列数为-1时,应自动计算出另一个参数
if size[0] == -1:
if size[1] == -1 or (self.__row * self.__col) % size[1] != 0:
print('新矩阵大小不正确!')
return
if size[1] == -1:
if size[0] == -1 or (self.__row * self.__col) % size[0] != 0:
print('新矩阵大小不正确!')
return
#将输入矩阵转换为一阶
data=[t for i in self.__data for t in i]
#按照输入大小重新设置矩阵
if size[0]==-1:
self.__row=int(self.__row*self.__col/size[1])
self.__col=size[1]
if size[1]==-1:
self.__col=int(self.__row*self.__col/size[0])
self.__row=size[0]
else:
self.__size[0]
self.__col=size[1]
self.__data=[[data[row* self.__col +col] for col in range(self.__col)]
for row in range(self.__row)]
@property
def T(self):
b=simNumpyArray([t for i in self.__data for t in i])
b.reshape((self.__row,self.__col))
b.__data=list(map(list,zip(*b.__data)))
b.__row,b.__col=b.__col,b.__row
return b
这个代码到处报错。。
初学者 完全搞不懂缩进问题(好像远不止一个错误)
请指点 顺便把还有的错误修改一下 使之可以正常运行
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/650959589276127.png "#left")