搜尋套件、儲存庫與 APP 分類

套件詳情v1.0.4

matrix2d

Matrix 2D 是一個用於 Dart 中數學二維陣列函數與操作的套件,類似於 NumPy

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
5.2萬
喜歡數
42
Pub 分數
150

安裝套件

flutter pub add matrix2d

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

Matrix2D 是一個專為高效 2D 數組運算設計的 Dart 套件,提供類似於 NumPy 的數學函數。它讓開發者能輕鬆執行矩陣運算,例如加法、乘法、轉置和切片。此套件以效能與簡潔性為設計目標,支援所有主要平台,包括 Android、iOS、Web、macOS、Windows 與 Linux。非常適合需要強大 2D 數值運算的科學計算、資料處理與圖形應用。

適用情境

  • 科學計算
  • 數據處理
  • 圖形變換
  • 機器學習預處理
  • 圖像操作

主要特色

  • 矩陣算術運算
  • 轉置與切片
  • 平台無關支援
  • 類似 NumPy 的 API
  • 高效能

適合對象

  • 數學應用
  • 資料科學專案
  • 遊戲開發
  • 電腦視覺任務
  • 教育工具

使用建議

  • 需要理解二維陣列
  • 僅限矩陣特定操作
  • 不適用於大規模計算
  • 無內建視覺化
  • 依賴於 Dart 在數值作業負載中的效能

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

Matrix 2D 🧮

pub version Build Status License: MIT

With Matrix 2D, you can perform matrix operations such as addition, subtraction, and multiplication in Dart. It is a simple and easy-to-use library inspired by Python's NumPy library.

Operations

  • addition(listA,listB) returns array of sums of corresponding elements of listA and listB of any dimensions.

  • subtraction(listA,listB) returns array of differences of corresponding elements of listA and listB of any dimensions.

  • division(listA,listB) divides listA by listB and returns new array

  • dot(listA,listB) Function returns the dot product of two arrays. For 2-D vectors, it is the equivalent to matrix multiplication. For 1-D arrays, it is the inner product of the vectors. For N-dimensional arrays, it is a sum product over the last axis of a and the second-last axis of b.

  • shape(list) returns dimensions of input array if the array is uniform or error otherwise.

  • flatten(list) returns 1-D representation of any shape and any levels of nesting of list array.

  • transpose(list) Reverse the axes of an array and returns the modified array

  • arange(start, stop, steps) returns evenly spaced values within the half-open interval [start, stop) with optional steps argument.

  • zeros(row,cols) Return a new array of given shape and type, with zeros

  • ones(row,cols) Return a new array of given shape and type, with ones

  • sum(list) Function returns the sum of array elements

  • reshape(list)Reshaping means changing the shape of an array.

  • diagonal(list) To find a diagonal element from a given matrix and gives output as one dimensional matrix.

  • fill(row,cols,object) Just like zeros() and ones this function will return a new array of given shape, with given object(anything btw strings too)

  • compareobject(list,operation,obj) compare values inside an array with given object and operations. function will return a new boolen array (this function is deprecated in favor of compare)

  • concatenate(listA,listB,{axis}) Concatenation refers to joining. This function is used to join two arrays of the same shape along a specified axis. The function takes the following parameters.Axis along which arrays have to be joined. Default is 0

  • min(list,{axis}) Functions, used to find the minimum value for any given array

  • max(list,{axis}) Functions, used to find the maximum value for any given array

  • slice(list (List<List>), row_index [start, stop*], column_index [start, stop*]*) Function used to slice two-dimensional arrays . (column_index and stop not required )

  • reverse(list,{axis}) Function used to reverse the array along the given axis. The function takes the following parameters.Axis along which the array is to be flipped. Default is 0

Examples

shape

List list = [[1, 2],[1, 2]];
print(list.shape);

ouput:

[2,2]

flatten

List list = [[1, 2],[1, 2]];
print(list.flatten);

ouput:

[1,2,1,2]

transpose

List list = [[1, 2],[1, 2]];
print(list.transpose);

ouput:

[[1,1],[2,2]]

addition

List list1 = [[1, 1],[1, 1]];
List list2 = [[2, 2],[2, 2]];
var addition = m2d.addition(list1,list2);
print(addition);

ouput:

[[3,3],[3,3]]

subtraction

List list1 = [[1, 1],[1, 1]];
List list2 = [[2, 2],[2, 2]];
var subtraction = m2d.subtraction(list1,list2);
print(subtraction);

ouput:

[[-1,-1],[-1,-1]]

division

List list1 = [[1, 1],[1, 1]];
List list2 = [[2, 2],[0, 2]];
var division = m2d.subtraction(division,list2);
print(division);

ouput:

[[0.5,Infinity],[0.5,0.5]]

dot operation

List list1 = [[1,2],[3,4]];
List list2 = [[11,12],[13,14]];
var dot = m2d.dot(division,list2);
print(dot);

ouput:

[[37, 40], [85, 92]]

arange

var arange = m2d.arange(8);
print(arange);

ouput:

[[0,1,2,3,4,5,6,7,8]]

sum

var list = [[2,2],[2,2]];
var sum = m2d.sum(list);
print(sum);

ouput:

8

reshape

List list = [[0, 1, 2, 3, 4, 5, 6, 7]];
list = list.reshape(2,4);
print(list);

ouput:

[[0, 1, 2, 3], [4, 5, 6, 7]]

linspace

var linspace = m2d.linspace(2, 3, 5);
print(linspace);

ouput:

[2.0, 2.25, 2.5, 2.75, 3.0]

diagonal

List list = [[1,1,1],[2,2,2],[3,3,3]];
print(list.diagonal);

ouput:

[1,2,3]

compare

var list = [[1,1,1],[2,2,2],[3,3,3]];
var compare = m2d.compare(list,'>',2);
print(compare);

ouput:

[[false, false, false], [false, false, false], [true, true, true]]

concatenate

axis 0
final l1 = [
    [1, 1, 1],
    [1, 1, 1],
    [1, 1, 1]
  ];
  final l2 = [
    [0, 0, 0],
    [0, 0, 0],
    [0, 0, 0],
    [0, 0, 0],
  ];
  final l3 = m2d.concatenate(l1, l2);
  print(l3);

ouput:

[[1, 1, 1],
[1, 1, 1],
[1, 1, 1],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]
axis 1
final a1 = [
    [1, 1, 1, 1],
    [1, 1, 1, 1],
    [1, 1, 1, 1]
  ];
  final a2 = [
    [0, 0, 0, 0, 0,0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0,0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0,0, 0, 0, 0, 0]
  ];

  final a3 = m2d.concatenate(a2, a1, axis: 1);
  print(a3);

ouput:

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1]]

zeros,ones and fill

var zeros = m2d.zeros(2,2);
print(zeros);

var ones = m2d.ones(2,2);
print(ones);

var anything = m2d.fill(2,2,'i love dart');
print(anything);

ouput:

[[0,0],[1,1]]

[[1,1],[1,1]]

[['i love dart','i love dart'],['i love dart','i love dart']]

min max

 final numbers = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
  ];
  print(numbers.min());
  print(numbers.min(axis: 1));
  print(numbers.min(axis: 0));
  print(numbers.max());
  print(numbers.max(axis: 1));
  print(numbers.max(axis: 0));

ouput:

[1]

[1, 4, 7]

[1, 2, 3]

[9]

[3, 6, 9]

[7, 8, 9]

slice


 var sliceArray = [
    [1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10]
  ];

  var newArray = m2d.slice(sliceArray, [0, 2], [1, 4]);
  print(newArray);

ouput:

[[2, 3, 4],[7, 8, 9]]

Contribution

If you want to contribute to this project, you are always welcome! Just make a pull request and I will review it as soon as possible.

Features and bugs

If you have any problems or suggestions, please open an issue here.

所屬分類

原始碼儲存庫

使用此套件的專案