Реализовать класс матрица python

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Matrix, a simple Python class for managing matrices.

El3k0n/Matrix

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Matrix, a simple Python class for managing matrices. Matrix supports various operations with matrices, like addition and multiplication.

  • To consolidate my knowledge of Python classes
  • To learn more about how matrices work
  • To learn git basics
  • Sum between matrices
  • Subtraction between matrices
  • Multiplication of a matrix by a number
  • Multiplication between matrices
  • Inverse matrix
  • Symmetric and antisymmetric part
  • Matrix of algebric complements
  • Check if a matrix contains an certain number
  • Equality and inequality test between matrices
  • Transpose matrix
  • Determinant of a matrix (Uses Laplace’s theorem)

Importing the module and creating a matrix object

Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from matrix import * >>> m = Matrix(2, 3) >>> m [0, 0, 0] [0, 0, 0] >>>

Filling the matrix with random values

You can also specify the range of the random values:

>>> m.random(1, 5) >>> m [5, 3, 4] [1, 1, 5] >>>
>>> m * 3 # Multiplication [15, 9, 12] [3, 3, 15] >>> m + 3 # Addition [8, 6, 7] [4, 4, 8] >>> m - 5 # Subtraction [0, -2, -1] [-4, -4, 0] >>>

Advanced matrix operations

>>> s = Matrix(3,3) # We create a new square matrix >>> s.random(1,5) >>> s [4, 1, 1] [1, 2, 2] [3, 2, 1] >>> s.is_square() True >>> s.determinant() # Calculating the determinant -7 >>> s.transpose() # Calculating the transpose matrix [4, 1, 3] [1, 2, 2] [1, 2, 1] >>> f = Matrix(3,3) >>> f.random(-10, 10) >>> f [-1, 2, 1] [5, -8, -6] [-3, 5, 4] >>> f.inverse_matrix() # Calculate the inverse matrix [2.0, 3.0, 4.0] [2.0, 1.0, 1.0] [-1.0, 1.0, 2.0] >>> f.symmetric_part() # Get the symmetric part [-1.0, 3.5, -1.0] [3.5, -8.0, -0.5] [-1.0, -0.5, 4.0] >>> f.antisymmetric_part() [0.0, -1.5, 2.0] [1.5, 0.0, -5.5] [-2.0, 5.5, 0.0] >>> f * s # Product between matrices [1, 5, 4] [-6, -23, -17] [5, 15, 11] >>>

Accessing and modifying the elements of a matrix

>>> s[0] # Get the first row [4, 1, 1] >>> s[0][2] # Get the third element of the first row 1 >>> s[0][2] = 15 # Set the element (1, 3) as 15 >>> s [4, 1, 15] [1, 2, 2] [3, 2, 1] >>> 15 in s # Check if the matrix contains a number True >>> del(s[1]) # Delete the second row >>> s [4, 1, 15] [3, 2, 1] >>> s.rows # The dimensions are automatically updated 2 >>>

Contributions are welcome! Please feel free to submit a Pull Request.

Источник

Реализация класса Matrix (ООП на Python)

Помогите решить задачи, бьюсь больше недели, пока безрезультатно Обидно, последняя неделя обучения осталась, не могу закрыть.

  • Конструктор от списка списков. Гарантируется, что списки состоят из чисел, не пусты и все имеют одинаковый размер. Конструктор должен копировать содержимое списка списков, т.е. при изменении списков, от которых была сконструирована матрица, содержимое матрицы изменяться не должно.
  • Метод __str__ переводящий матрицу в строку. При этом элементы внутри одной строки должны быть разделены знаками табуляции, а строки — переносами строк. При этом после каждой строки не должно быть символа табуляции и в конце не должно быть переноса строки.
  • Метод size без аргументов, возвращающий кортеж вида (число строк, число столбцов)

И в начале файла:

from sys import stdin

Для тестирования класса вы можете вместо строки exec(stdin.read()) вставлять код из примеров или писать свой код.

Вводится исходный код тестирующей программы на языке Python.

Выведите результат её работы в текущем окружении при помощи exec как это указано в условии.

  • __add__ принимающий вторую матрицу того же размера и возвращающий сумму матриц
  • __mul__ принимающий число типа int или float и возвращающий матрицу, умноженную на скаляр
  • __rmul__ делающий то же самое, что и __mul__. Этот метод будет вызван в том случае, аргумент находится справа. Можно написать __rmul__ = __mul__
  • Добавьте в метод __add__ проверку на ошибки в размере входных данных, чтобы при попытке сложить матрицы разных размеров было выброшено исключение MatrixError таким образом, чтобы matrix1 поле MatrixError стало первым аргументом __add__ (просто self), а matrix2 — вторым (второй операнд для сложения).
  • Реализуйте метод transpose, транспонирующий матрицу и возвращающую результат (данный метод модифицирует экземпляр класса Matrix)
  • Реализуйте статический метод transposed, принимающий Matrix и возвращающий транспонированную матрицу.

Реализация класса matrix для умножения матриц, заданных в виде списков
На вход подаются 2 произвольных списка (в тренировочном примере a=,] и b=,]). Класс matrix в своем.

Реализация класса Matrix: Добавить, умножить
Привет! Помогите, пожалуйста, решить задание. 1. Реализуйте класс Matrix. Он должен содержать.

С++. ООП. Реализация класса Tour
Класс Tour Данные: — список пунктов маршрута с указанием даты приезда — дата начала поездки.

ООП в Python. Организация класса с родительским окном и класса с дочерним окном
Собственно есть такой код накиданый мной. Изначально передо мной была задача: Создать приложение с.

Эксперт Python

И в чём проблема?
Если вообще не знаете, как писать классы — срочняком читать основы ООП.
Если знаете — уже должны быть какие-то.

Видимо, знаю на недостаточном уровне.

У меня получилось нечто такое, но решение не проходит через автооценщик:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
from sys import stdin class matrix(): def __init__(self,list_of_lists): self.mat = list_of_lists def str(self): string = '' for i in self.mat: for j in i: string = string+'%s\t' %(j) string = string[:-1] string = string+'\n' string = string[:-1] return string a = [[1,2,3],[4,5,6],[7,8,9]] m = matrix(a) print(m.str()) exec(stdin.read())
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
class Matrix(object): def __init__(self, matrix): self.matrix = matrix def __str__(self): return '\n'.join([''.join(['%d\t' % i for i in row]) for row in matrix]) @property def size(self): rows = len(self.matrix) cols = 0 for row in self.matrix: if len(row) > cols: cols = len(row) return (rows, cols)
import random matrix = [[i for i in range(random.randrange(0, 9))] for i in range(random.randrange(0, 9))] inst = Matrix(matrix) print(inst) print(inst.size)
def __str__(self): return '\n'.join([''.join(['%d\t' % i for i in row]) for row in self.matrix])

Эксперт Python

Arctic_kh, окей, уже хорошо. На будущее — ползуйтесь специальными тегами для кода, когда постите сюда.
Вот тут

def __init__(self,list_of_lists): self.mat = list_of_lists

Сделайте копирование объекта, используйте модуль copy.

По поводу str — уже подсказали.

Добрый вечер. Проблема по этой же теме: на компьютере тест m = Matrix([[10, 10], [0, 0], [1, 1]])
print(m.size()) проходится, а тестировщик на сайте выдаёт Runtime Error.
Может, кто-нибудь сможет посоветовать, что исправить?

Уже наверное поздно, но может кому на будущее пригодится: runtime error в этом случае из-за импорта numpy. Нужно обойтись без него.

Уже писал это, но на другом форуме:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
def __mul__(self, other): if isinstance(other, int) or isinstance(other, float): result = [[other * x for x in y] for y in self.list2D] return matrix(result) elif self.dim_C != other.dim_R: return 'Нельзя перемножить матрицы таких размерностей' else: a = range(self.dim_C) b = range(self.dim_R) c = range(other.dim_C) result = [] for i in b: res = [] for j in c: el, m = 0, 0 for k in a: m = self.list2D[i][k] * other.list2D[k][j] el += m res.append(el) result.append(res) return matrix(result) def __rmul__(self, other): return self.__mul__(other)

ЦитатаСообщение от Black Fregat Посмотреть сообщение

ЦитатаСообщение от FilArt97 Посмотреть сообщение

makishmaki, у тебя получилось сдать девятую неделю? Есть код для трех задач? Если есть — напиши здесь. Две недели уже сдать не могу

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
from sys import stdin from copy import deepcopy class MatrixError(BaseException): def __init__(self, Matrix, other): self.matrix1 = Matrix self.matrix2 = other class Matrix(): def __init__(self, matrix): self.matrix = deepcopy(matrix) def __str__(self): string = '' for i in self.matrix: for j in i: string += '%s\t' % j string = string[:-1] string += '\n' string = string[:-1] return string def size(self): rows = len(self.matrix) cols = 0 for row in self.matrix: if len(row) > cols: cols = len(row) return (rows, cols) def __getitem__(self, idx): return self.matrix[idx] def __add__(self, other): if len(self.matrix) == len(other.matrix): lenght = len(self.matrix[0]) for row in self.matrix: if len(row) != lenght: raise MatrixError(self, other) for row2 in other.matrix: if len(row2) != lenght: raise MatrixError(self, other) result = [] numbers = [] for i in range(len(self.matrix)): for j in range(len(self.matrix[0])): summa = other.matrix[i][j] + self.matrix[i][j] numbers.append(summa) if len(numbers) == len(self.matrix[0]): result.append(numbers) numbers = [] return Matrix(result) else: raise MatrixError(self, other) def __mul__(self, other): if isinstance(other, int) or isinstance(other, float): result = [[other * j for j in i] for i in self.matrix] return Matrix(result) __rmul__ = __mul__ def transpose(self): transMatrix = list(zip(*self.matrix)) self.matrix = transMatrix return Matrix(transMatrix) def transposed(self): transMatrix = list(zip(*self.matrix)) return Matrix(transMatrix) exec(stdin.read())
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
from sys import stdin from copy import deepcopy class Matrix: def __init__(self, matrix): self.matrix = deepcopy(matrix) def __str__(self): # без аргументов return '\n'.join(['\t'.join(map(str, list)) for list in self.matrix]) def __add__(self, other): return Matrix() def size(self): # без аргументов! return (len(self.matrix), len(self.matrix[0])) def __add__(self, other): return Matrix(list(map( lambda x, y: list(map(lambda z, w: z + w, x, y)), self.matrix, other.matrix))) def __mul__(self, other): return Matrix([[i * other for i in list] for list in self.matrix]) __rmul__ = __mul__ exec(stdin.read())

Реализация класса Python
Реализовать класс, позволяющий выполнять операции в поле по простому модулю (модуль до 2^30).

Реализация класса в Python 3.7
Подскажите, пожалуйста, как этот код реализовать через класс Только начинаю изучать ООП и Python.

Реализация класса «Геометрическая прогрессия» (ООП)
Ребятки,привет.Написал кодец,работает,все ок.Но его как-то нужно полностью перестроить в ООП.Не.

ООП реализация меню с классом его пунктов. Вызов функций посредством метода класса пункта меню
Проходим ООП. В задании, предшествовавшем этому, необходимо было скопировать пример преподавателя.

Дать определение класса Matrix – квадратных матриц и реализацию этого класса
Помогите, пожалуйста, решить задания к к.р. по С++. Если кто-то знает какие-то задания из списка.

Создание класса Matrix
Напишите программу, которая будет содержать класс Matrix (матрица). Класс Matrix должен.

Источник

Читайте также:  Number is even or odd in java
Оцените статью