Skip to content

A lightweight module for simple Matrix operation. Simple and easy to use.

Notifications You must be signed in to change notification settings

Kamilet/Simple-Matrix-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 

Repository files navigation

Simple-Matrix-python

A lightweight module for simple Matrix operation. Simple and easy to use.
轻量级的简单矩阵处理模块,使用起来比较方便。

  • English Documentation Jump
  • 简体中文使用指南 转到

English Documentation

Thanks for checking this module.
It's my first one. Hopefully it's useful for you.
1 Class and 20 functions are in this module,
which will help you with basic opreations on Matrixs.

Please remember: All numbers of rows and columns start from ZERO. So a matrix 'A' with m rows and n columns, the last item should be 'A[m-1][n-1]'.

Here are introductions for all functions:

Index


Matrix Building

Generator

def sm_gen(row: int = 1, colume: int = 1, items=0, unit=False, eye=False):
  • row - Number of row, for A(m*n) you need set to m
  • colume - Number of colume, for A(m*n) you need set to n
  • items - For filling
  • unit
    • True - Generate a unit matrix: row*row
  • eye
    • True - Ditto Return a new matrix(list).

Complementor

def sm_cons(matrix, items=0, echo=0):
  • matrix - A matrix need to be complement. For example:[[1,2],[1]]
  • items - For filling
  • echo
    • True - Tell you are running complementor Return a new matrix(list).

Single Matrix Basic Opreation

Deep copy

def sm_copy(matrix):

Deep copy, just use it whenever you need change original matrix.
Return a new matrix(list).

Legality check

def sm_check(matrix):

Check if every rows are in same length.
If True, return a tuple as (row, column), you can use as bool.

Number check

def sm_numcheck(matrix):

Check if all items are numbers. Run a sm_check() automatically.
Return True or false.

Convert to numbers

def sm_number(matrix, force=False):
  • force
    • True - Letters and '' will be 0 Return a new matrix(list).

Convert to strings

def sm_str(matrix):

Return a new matrix(list).

Negative all elements

def sm_negative(matrix):

Return a new matrix(list).

Absolute value

def sm_abs(matrix):

Return a new matrix(list).


Single Matrix Operation

Matrix transpose

def sm_trans(matrix):

Exchange lines and columns.
Return a new matrix(list).

Matrix conjugate

def sm_conj(matrix):

Return a new matrix(list).

Matrix conjugate transpose

def sm_con_trans(matrix):

Return a new matrix(list).

Determinant

def sm_det(matrix, force=False):
  • force
    • True - opreat even low != column
    • False - only opreat when low == column Return a number.

Inverse Matrix

def sm_inverse(matrix):

Return a new matrix(list).

Algebraic Remainder

def sm_alge(matrix, row:int , colume:int):
  • row - the row should be ignored
  • colume - the colume should be ignored Return a number.

Class Smartix()

OO Legality check

class Smatrix:
def __init__(self, matrix, allnumber=False):
  • allnumber
    • True - run sm_numcheck()
    • False - only sm_check()

Clean Matrix

def clean(self, items=0, echo=False):
  • items - clean with this
  • echo
    • True - tell you it's cleaned Return a new matrix(list).

OO Legality check 1

def check(self):

Same function as sm_check().

OO Number check

def numcheck(self):

Same function as sm_numbercheck().

Print by rows

def view(self):

Just pring, no return.

OO Negative all elements

def negative(self):

Same function as sm_negative().

Rotate

def rotate(self, method='exchange', step: int=1, force=False):
  • method
    • exchange - Exchange rows and columns
    • ex | transpose | tr - Ditto
    • clockwise - Rotate in clockwise direction
    • clock - Ditto
    • mirrorrow - mirror in horizontal direction
    • mr | mh | mirror - Ditto
    • mirrorcolume - mirror in vertical direction
    • mc | mv - Ditto
  • step - How many times to run
  • force
    • True - If unsuccessful, an error will be asserted Return a new matrix(list).

Transpose

def trans(self):

Same function as sm_trans().

Conjugate

def conj(self):

Same function as sm_conj().

Conjugate transpose

def con_trans(self):

Same function as sm_con_trans().

OO Determinant

def det(self):

Same function as sm_det().

Inverse

def inverse(self):

Same function as sm_inverse().

Find a segment of a certain length in the matrix

def find(self, string:str='', length=2, direct='all', echo=False):

Try to fin a segment that repeats, such as ['4','4','4'] in any direction!

  • string - The single string, can be a number
  • length - How many times repeats
  • direct
    • all - All direction
    • a - Ditto
    • row - Only search in rows - Priority: 0 (hightest)
    • r - Ditto
    • colume - Only search in columes - Priority: 1
    • c - Ditto
    • rowcolume - Only search in rows and columes
    • rc | cr - Ditto
    • oblique - Only search in oblique direction
      • the \ - Priority: 2
      • the / - Priority: 3 (lowest)
    • o - Ditto
  • echo
    • False - Return True if find one
    • True - Return (row, column) as the start point of first match

You should know a game called Gobang,
this function can be used to determine the outcome.
Of course, Othello is also ok.

Matrix trace

def trace(self):

Return a number.


Multiple Matrix Operation

Sum All

def sm_sum(\*matrixs, force=False):
  • matrixs - can be two or more matrixs
  • force
    • True - Set '' or SPACE to 0 Error occurs with violated algorithm.
      Return a new matrix(list).

Subtraction

def sm_minus(matrix_1, matrix_2, force=False):
  • matrixs_1 - first matrix
  • matrixs_2 - second matrix
  • force
    • True - Set '' or SPACE to 0 Error occurs with violated algorithm.
      Return a new matrix(list).

Multiplication with matrixs and numbers

def sm_multis(\*matrixs_or_numbers, force=False):
  • matrixs - can be two or more matrixs and numbers
  • force
    • True - Set '' or SPACE to 0 Error occurs with violated algorithm.
      Return a new matrix(list, even only one number).

Multiply

def sm_multi_mm(matrix_1, matrix_2):
  • matrixs_1 - first matrix
  • matrixs_2 - second matrix Error occurs with violated algorithm. Use sm_number() if you need.
    Return a new matrix(list, even only one number).

Multiply with number

def sm_multi_mn(matrix, number):
  • matrixs_1 - first matrix
  • matrixs_2 - anumber Use sm_number() if you need.
    Return a new matrix(list).

简体中文使用指南

感谢查看,这是我的第一个模块,希望可以为你带来方便。
本模块包含1个类和20个函数,包含了矩阵运算的一些基本功能。

特别注意:所有行号(row)和列号(column)都从0开始。 即对于m行n列的行列式A,所有元素应该是A(0,0)到A(m-1,n-1)

以下是介绍和使用方式:(加粗的表示是个人常用的)

目录


矩阵建设函数

生成任意矩阵

def sm_gen(row: int = 1, colume: int = 1, items=0, unit=False, eye=False):
  • row - 行数
  • colume - 列数
  • items - 用于填充的元素
  • unit
    • True - 生成单位矩阵(仅参考row)
  • eye
    • True - 生成单位矩阵(和unit相同) 返回新矩阵(列表)。

补全矩阵

def sm_cons(matrix, items=0, echo=0):
  • matrix - 不全的矩阵,比如最后一行缺一个元素
  • items - 用于填充的元素
  • echo
    • True - 提示你运行了本函数 返回新矩阵(列表)。

单矩阵基本处理

深度拷贝

def sm_copy(matrix):

深度拷贝这个矩阵,在你修改原矩阵的时候需要调用。
返回新矩阵(列表)。

合法性检查

def sm_check(matrix):

检查每行的长度是否相等。
如果是,返回行数和列数(元组),也可以用做True。
如果否,返回False。

数字检查

def sm_numcheck(matrix):

检查元素是否全部为数字,包含了一个合法性检查(sm_check(matrix))。
返回True或False。

所有元素转换为数字

def sm_number(matrix, force=False):
  • force
    • True - 将非数字元素转换为0 返回新矩阵(列表)。

所有元素转换为字符

def sm_str(matrix):

返回新矩阵(列表)。

所有元素加负号

def sm_negative(matrix):

返回新矩阵(列表)。

所有元素绝对值

def sm_abs(matrix):

返回新矩阵(列表)。


处理单个矩阵的函数

矩阵转置

def sm_trans(matrix):

交换行和列。
返回新矩阵(列表)。

矩阵共轭

def sm_conj(matrix):

返回新矩阵(列表)。

矩阵共轭转置

def sm_con_trans(matrix):

返回新矩阵(列表)。

行列式运算

def sm_det(matrix, force=False):
  • force
    • True - 即便行列不相等也进行运算
    • False - 仅行列相等时运算 返回数字。

逆矩阵

def sm_inverse(matrix):

矩阵求逆。 返回新矩阵(列表)。

代数余子式

def sm_alge(matrix, row:int , colume:int):
  • matrix - 用于处理的矩阵
  • row - 求余子式的元素的所在行号
  • colume - 求余子式的元素的所在列号 返回数字。

类Smartix下的函数

面向对象并检查合法性

class Smatrix:
def __init__(self, matrix, allnumber=False):
  • allnumber
    • True - 强制进行一次sm_numcheck()数字检查
    • False - 只进行sm_check()合法性检查

清空矩阵

def clean(self, items=0, echo=False):
  • items - 返回的矩阵仅包含这个元素
  • echo
    • True - 告知你运行了这个函数 返回新矩阵(列表)。

检查合法性

def check(self):

同函数sm_check()。

数字检查

def numcheck(self):

同函数sm_numbercheck()。

按行列输出到屏幕

def view(self):

将矩阵按照行列打印出来。 无输出。

所有元素加负号

def negative(self):

同函数sm_negative()。

任意旋转

def rotate(self, method='exchange', step: int=1, force=False):
  • method
    • exchange - 转置,交换横纵
    • ex 或 transpose 或 tr - 同上
    • clockwise - 顺时针旋转
    • clock - 同上
    • mirrorrow - 沿着行方向翻转,即水平翻转
    • mr 或 mh 或 mirror - 同上
    • mirrorcolume - 沿着列方向翻转,即垂直翻转
    • mc 或 mv - 同上
  • step - 旋转执行多少次
  • force
    • True - 如果旋转执行失败(如或输入不合法)报错 返回新矩阵(列表)。

转置

def trans(self):

同函数sm_trans()。

共轭

def conj(self):

同函数sm_conj()。

共轭转置

def con_trans(self):

同函数sm_con_trans()。

行列式运算

def det(self):

同函数sm_det()。

逆矩阵

def inverse(self):

同函数sm_inverse()。

在矩阵里查找某方向某长度的片段

def find(self, string:str='', length=2, direct='all', echo=False):

将矩阵看作一个棋盘,在棋盘上寻找“连珠”的元素。
找到一个后或找不到函数将返回结束。

  • string - 被寻找的元素,为空则寻找任意连续出现的元素
  • length - 元素的长度,五子棋的话设置为5
  • direct
    • all - 在全部方向寻找
    • a - 同上
    • row - 仅在行里寻找 - 优先级:0(最高)
    • r - 同上
    • colume - 仅在列里寻找 - 优先级:1
    • c - 同上
    • rowcolume - 仅在行和列里寻找
    • rc 或 cr - 同上
    • oblique - 仅在斜方向寻找
      • 左上到右下 \ - 优先级:2
      • 右上到左下 / - 优先级:3(最低)
    • o - 同上
  • echo
    • False - 返回True(找到)或False
    • True - 如果找到,返回连续元素起点的坐标(靠上的) 可以作为五子棋判断胜负的函数。

矩阵的迹

def trace(self):

计算矩阵的迹。 返回数字。


处理多个矩阵的函数

多矩阵求和

def sm_sum(\*matrixs, force=False):
  • matrixs - 接受的矩阵,可以为2个以上
  • force
    • True - 矩阵内的空格和字母会被作为0强制处理 输入的矩阵不符合相加规则会出错。
      返回新矩阵(列表)。

两矩阵相减

def sm_minus(matrix_1, matrix_2, force=False):
  • matrixs_1 - 作为被减数的矩阵
  • matrixs_2 - 作为减数的矩阵
  • force
    • True - 矩阵内的空格和字母会被作为0强制处理 输入的矩阵不符合相加规则会出错。
      返回新矩阵(列表)。

可包含纯数字的多矩阵相乘

def sm_multis(\*matrixs_or_numbers, force=False):
  • matrixs - 接受的矩阵或数字,可以为2个以上
  • force
    • True - 矩阵内的空格和字母会被作为0强制处理 输入的矩阵不符合相乘规则会出错。
      返回新矩阵(列表,即便是相乘得到数字,也会返回1x1的列表)。

两矩阵相乘

def sm_multi_mm(matrix_1, matrix_2):
  • matrixs_1 - 作为被乘数的矩阵
  • matrixs_2 - 作为乘数的矩阵 输入的矩阵不符合相乘规则会出错,不能出现非数字,如需要请主动调用sm_number()。
    返回新矩阵(列表,即便是相乘得到数字,也会返回1x1的列表)。

矩阵和数字相乘

def sm_multi_mn(matrix, number):
  • matrixs_1 - 作为被乘数的矩阵
  • matrixs_2 - 作为乘数的数字 矩阵里不能出现非数字,如需要请主动调用sm_number()。
    返回新矩阵(列表)

About

A lightweight module for simple Matrix operation. Simple and easy to use.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages