python矩阵问题,如何编写以下函数

1.编写一个函数来生成一个随机整数数据的“n x n”矩阵,矩阵变量应该是“numpy.ndarray”类型的对象。该函数应将所需的矩阵大小(值为n)作为参数。
2.编写一个可以找到3x3矩阵的行列式的函数。需要使用适当的loop循环而不是library函数。使用上一题中的函数生成3x3矩阵并将此函数应用于该矩阵。
3.编写一个函数,将“n x n”矩阵作为参数,并将内置的numpy行列式函数应用于该矩阵。

import numpy as np
#生成矩阵
def get_mat(n):
    array = np.random.randint(1, 1000, n **2)
    matrix = np.reshape(array, (n, n))
    return matrix

mat = get_mat(3)
print(mat)
#循环计算
def calc1_(mat):
    tmp_mat = np.c_[mat, mat[:3, :2]]
    z1,z2 = 0, 0
    for i in range(3):
        z1 += tmp_mat[0, i] * tmp_mat[1, i+1] * tmp_mat[2, i+2]
    for i in range(2, 5):
        z2 -= tmp_mat[0, i] * tmp_mat[1, i-1] * tmp_mat[2, i-2]
    return z1 + z2
#numpy计算
def calc2_(mat): 
    return np.linalg.det(mat)

print(calc1_(mat))
print(calc2_(mat))


from numpy import random
import numpy


def fun(list):
    num = len(list)
    sum = sum1 = 0
    for z in range(num):    # 该for循环作用是计算从左往右的斜乘积和
        ss = 1
        row = -1
        for g in range(z, z + num):
            row += 1
            ss *= list[row][g % num]
        sum += ss
    for i in range(num - 1, -1, -1):    # 该for循环作用是计算从右往左的斜乘积和
        zz = 1
        row = -1
        for u in range(i, i - num, -1):
            row += 1
            if u < 0:
                zz *= list[row][num + u]
            else:
                zz *= list[row][u]
        sum1 += zz
    a = sum - sum1  # a就是该行列式的最终结果
    return a


length = int(input('请输入矩阵大小'))
arr1 = random.random(size=(length, length))
print('矩阵类型')
print(type(arr1))
print('矩阵内容')
print(arr1)

if length == 3:
    print('3*3矩行列式')
    print(fun(arr1))

print('n*n矩行列式')
print(numpy.linalg.det(arr1))

看看这个
【用python做矩阵运算-哔哩哔哩】 https://b23.tv/GyaFTKL