Bases of array object

This commit is contained in:
Shadow15510 2021-07-23 20:26:38 +02:00
parent 1e52cf8234
commit 80f8b8fad6
1 changed files with 72 additions and 0 deletions

72
C_numpy.py Normal file
View File

@ -0,0 +1,72 @@
class array:
def __init__(self, content):
def get_content(data):
rslt = []
for i in data:
if isinstance(i, (list, tuple)): rslt.append(get_content(i))
else: rslt.append(i)
return rslt
def get_shape(data, shape=[]):
shape.append(len(data))
if type(data[0]) == list:
get_shape(data[0], shape)
return shape
def get_size(shape):
size = 1
for i in shape:
size *= i
return size
if type(content) == int:
self.content = content
self.shape = 0
self.size = 1
else:
self.content = get_content(content)
self.shape= tuple(get_shape(self.content))
self.size = get_size(self.shape)
def __str__(self):
msg = "["
if len(self.shape) > 1:
msg += "\n".join([f"{i}, " for i in self.content])
else:
msg += "".join([f"{i}, " for i in self.content])
msg = msg[:-2] + "]"
return msg
def __repr__(self):
msg = "array(["
if len(self.shape) > 1:
msg += "\n ".join([f"{i}, " for i in self.content])
else:
msg += "".join([f"{i}, " for i in self.content])
msg = msg[:-2] + "])"
return msg
def __getitem__(self, index):
result = self.content[:]
for i in index:
if type(i) == int and type(result[0]) != int:
result = [a[i] for a in result]
else:
result = result[i]
if type(result) == int: break
return array(result)
def __get_column(self, col):
return array([content[col] for i in self.content])
def copy(self):
return array(self.content[:])
def linspace(start, stop, num=50):
step = (stop - start) / (num - 1)
return array([start + i * step for i in range(num)])