dart_tensor 1.0.0 dart_tensor: ^1.0.0 copied to clipboard
A flutter package to deal with multi-dimensional list ( or tensor). It include creation and manipulation of these tensors.
Dart Tensor
Description #
Dart Tensor is light weight dart plugin to help deal with multi-dimensional lists (or tensors). The project is the dart language edition of the NumPy package in python.
Operations #
-
changeDtype(list,dtype)
returns the tensor with transformed datatype. Available dtypes can be 'int', 'double' and 'string' -
changeDim(list,n)
returns the tensor withn
dimensions -
ndim(list)
returns dimensions of the tensor. -
shape(list)
returns the shape of the tensor. -
flatten(list)
returns 1-D tensor from any dimension tensor. -
reshape(list, shape)
returns the reshaped tensor of the give shape. -
add(listA, element, listB)
returns the tensor after addition with either the element or the other tensor. -
sub(listA, element, listB)
returns the tensor after subtraction with either the element or the other tensor. -
mult(listA, element, listB)
returns the tensor after multiplication with either the element or the other tensor. -
div(listA, element, listB)
returns the tensor after division with either the element or the other tensor. -
modulo(listA, element, listB)
returns the tensor after getting modulus with either the element or the other tensor. -
power(listA, element, listB)
returns the tensor after powering with either the element or the other tensor. -
max(list)
returns the maximum element from the tensor. -
min(list)
returns the minimum element from the tensor. -
random(shape,start, end,dtype)
returns a tensor of given shape with random values between start and end of given dtype. Available dtypes can be 'int' and 'double'. -
zeros(shape,dtype)
returns a tensor of zeros of given shape of given dtype. Available dtypes can be 'int' and 'double'. -
ones(shape,dtype)
returns a tensor of ones of given shape of given dtype. Available dtypes can be 'int' and 'double'. -
sum(list)
returns the sum of all tensor elements. -
prod(list)
returns the product of all tensor elements. -
sqrt(list)
returns the tensor with square root value of respective tensor elements. -
sin(list)
returns the tensor with sin value of respective tensor elements. -
cos(list)
returns the tensor with cos value of respective tensor elements. -
tan(list)
returns the tensor with tan value of respective tensor elements. -
asin(list)
returns the tensor with arc sin value of respective tensor elements. -
acos(list)
returns the tensor with arc cos value of respective tensor elements. -
atan(list)
returns the tensor with arc tan value of respective tensor elements. -
abs(list)
returns the tensor with absolute value of respective tensor elements. -
floor(list)
returns the tensor with floor value of respective tensor elements. -
ceil(list)
returns the tensor with ceil value of respective tensor elements. -
round(list)
returns the tensor with round value of respective tensor elements. -
log(list)
returns the tensor with natural log value of respective tensor elements. -
compareOfVariable(list, operator, element)
returns the tensor of boolean values after performing condition operation with element on every value of the tensor. Available operators are '<', '>', '<=', '>=', '==', '!='. -
compareOfTensor(listA, operator, listB)
returns the tensor of boolean values after performing condition operation between respective elements of listA and listB. Available operators are '<', '>', '<=', '>=', '==', '!='. -
concatenate(listA, listB, axis)
returns the tensor after performing concatenation between listA and listB based on the provided axis value. -
sort(listA, desc)
returns the tensor after sorting all the elements in the tensor. If desc is true then the tensor is sorted in decreasing order.
Installation #
This package requires the latest version of Dart. You can download the latest and greatest here.
1. Depend on it #
Add this to your package's pubspec.yaml
file:
dependencies:
dart_tensor: '^1.0.0'
2. Install it #
You can install packages from the command line:
$ pub get
Alternatively, your editor might support pub. Check the docs for your editor to learn more.
3. Import it #
Now in your Dart code, you can use:
import 'package:dart_tensor/dart_tensor.dart';
Example #
Starter Code #
List dataList = List.generate(5, (j) => List.generate( 3,
(i) => [ 3 * 3 * j + 3 * i + 0, 3 * 3 * j + 3 * i + 1,
3 * 3 * j + 3 * i + 2 ],
growable: false), growable: false);
// declaration of DartTensor class
DartTensor dt = DartTensor();
List data;
Output
[[[0, 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]]]
Change Datatype #
data = dt.changeDtype(dataList, 'double');
print(data);
Output
[[[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]], [[9.0, 10.0, 11.0], [12.0, 13.0, 14.0], [15.0, 16.0, 17.0]], [[18.0, 19.0, 20.0], [21.0, 22.0, 23.0], [24.0, 25.0, 26.0]], [[27.0, 28.0, 29.0], [30.0, 31.0, 32.0], [33.0, 34.0, 35.0]], [[36.0, 37.0, 38.0], [39.0, 40.0, 41.0], [42.0, 43.0, 44.0]]]
Change Dimensions #
data = dt.changeDim(dataList, 4);
print(data);
Output
[[[[0, 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]]]]
Get number of dimensions #
print(data.ndim);
Output
4
Get shape of the tensor #
print(data.shape);
Output
[1, 5, 3, 3]
Flatten the tensor #
print(data.flatten);
Output
[0, 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]
Reshaping the tensor #
data = dt.reshape(dataList, [9, 5]);
print("Reshaped tensor: $data");
print("Reshaped shape: ${data.shape}");
Output
Reshaped tensor: [[0, 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]]
Reshaped shape: [9, 5]
Addition #
data = dt.add(dataList, tensor: dataList);
print("Added tensor data: $data");
Output
Added tensor data: [[[0, 2, 4], [6, 8, 10], [12, 14, 16]], [[18, 20, 22], [24, 26, 28], [30, 32, 34]], [[36, 38, 40], [42, 44, 46], [48, 50, 52]], [[54, 56, 58], [60, 62, 64], [66, 68, 70]], [[72, 74, 76], [78, 80, 82], [84, 86, 88]]]
Subtraction #
data = dt.sub(dataList, element: 20);
print("subtracted tensor data: $data");
Output
subtracted tensor data: [[[-20, -19, -18], [-17, -16, -15], [-14, -13, -12]], [[-11, -10, -9], [-8, -7, -6], [-5, -4, -3]], [[-2, -1, 0], [1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12], [13, 14, 15]], [[16, 17, 18], [19, 20, 21], [22, 23, 24]]]
Multiplication #
data = dt.mult(dataList, tensor: dataList);
print("multiplied tensor data: $data");
Output
multiplied tensor data: [[[0, 1, 4], [9, 16, 25], [36, 49, 64]], [[81, 100, 121], [144, 169, 196], [225, 256, 289]], [[324, 361, 400], [441, 484, 529], [576, 625, 676]], [[729, 784, 841], [900, 961, 1024], [1089, 1156, 1225]], [[1296, 1369, 1444], [1521, 1600, 1681], [1764, 1849, 1936]]]
Division #
data = dt.div(dataList, element: 7);
print("divided tensor data: $data");
Output
divided tensor data: [[[0.0, 0.14285714285714285, 0.2857142857142857], [0.42857142857142855, 0.5714285714285714, 0.7142857142857143], [0.8571428571428571, 1.0,
1.1428571428571428]], [[1.2857142857142858, 1.4285714285714286, 1.5714285714285714], [1.7142857142857142, 1.8571428571428572, 2.0], [2.142857142857143, 2.2857142857142856, 2.4285714285714284]], [[2.5714285714285716, 2.7142857142857144, 2.857142857142857], [3.0, 3.142857142857143, 3.2857142857142856], [3.4285714285714284, 3.5714285714285716, 3.7142857142857144]], [[3.857142857142857, 4.0, 4.142857142857143], [4.285714285714286, 4.428571428571429, 4.571428571428571], [4.714285714285714, 4.857142857142857, 5.0]], [[5.142857142857143, 5.285714285714286, 5.428571428571429], [5.571428571428571, 5.714285714285714, 5.857142857142857], [6.0, 6.142857142857143, 6.285714285714286]]]
Modulo #
data = dt.modulo(dataList, element: 8);
print("modulated tensor data: $data");
Output
modulated tensor data: [[[0, 1, 2], [3, 4, 5], [6, 7, 0]], [[1, 2, 3], [4, 5, 6], [7, 0, 1]], [[2, 3, 4], [5, 6, 7], [0, 1, 2]], [[3, 4, 5], [6, 7, 0], [1, 2, 3]], [[4, 5, 6], [7, 0, 1], [2, 3, 4]]]
Power #
data = dt.power(dataList, element: 2);
print("powered tensor data: $data");
Output
powered tensor data: [[[0, 1, 4], [9, 16, 25], [36, 49, 64]], [[81, 100, 121], [144, 169, 196], [225, 256, 289]], [[324, 361, 400], [441, 484, 529], [576, 625,
676]], [[729, 784, 841], [900, 961, 1024], [1089, 1156, 1225]], [[1296, 1369, 1444], [1521, 1600, 1681], [1764, 1849, 1936]]]
Maximum element from all tensor values #
print(dataList.max);
Output
44
Minimum element from all tensor values #
print(dataList.min);
Output
0
Random Value Tensor #
data = dt.random([2, 5, 3, 5], start: 10, end: 50, dtype: 'int');
print("Tensor of Random Data: $data");
Output
Tensor of Random Data: [[[[20, 27, 30, 17, 20], [19, 26, 20, 28, 11], [32, 14, 37, 16, 31]], [[11, 31, 28, 38, 14], [11, 22, 32, 27, 18], [20, 33, 27, 26, 23]], [[27, 25, 30, 33, 32], [32, 18, 28, 14, 23], [26, 21, 12, 13, 18]], [[28, 29, 16, 18, 14], [26, 10, 17, 12, 10], [32, 37, 22, 20, 10]], [[18, 12, 11, 24, 20],
[27, 21, 21, 32, 12], [13, 38, 12, 13, 11]]], [[[16, 18, 15, 16, 17], [19, 18, 34, 18, 20], [26, 25, 12, 14, 29]], [[22, 34, 23, 12, 39], [17, 32, 18, 23, 17],
[11, 10, 16, 38, 19]], [[18, 30, 16, 20, 21], [22, 22, 13, 11, 24], [28, 18, 10, 24, 22]], [[31, 13, 20, 18, 12], [22, 14, 10, 26, 11], [17, 28, 29, 32, 20]], [[24, 19, 26, 18, 33], [25, 19, 15, 11, 38], [16, 14, 38, 16, 33]]]]
Zero Tensor #
data = dt.zeros([2, 5, 3], dtype: 'int');
print("Zeros Tensor: $data");
Output
Zeros Tensor: [[[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]]]
Ones Tensor #
data = dt.ones([2, 5, 3], dtype: 'double');
print("Ones Tensor: $data");
Output
Ones Tensor: [[[1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0, 1.0, 1.0]]]
Sum of all elements in Tensor #
print(dataList.sum);
Output
990
Product of all elements in Tensor #
print(dataList.prod);
Output
0
Comparision of tensor with an element #
data = dt.compareOfVariable(dataList, ">=", 12);
print("Compared Data: $data");
Output
Compared Data: [[[false, false, false], [false, false, false], [false, false, false]], [[false, false, false], [true, true, true], [true, true, true]], [[true, true, true], [true, true, true], [true, true, true]], [[true, true, true], [true, true, true], [true, true, true]], [[true, true, true], [true, true, true], [true, true, true]]]
Comparision of tensor with a tensor #
data = dt.compareOfTensor(dataList, "==", dataList);
print("Compared Data: $data");
Output
Compared Data: [[[true, true, true], [true, true, true], [true, true, true]], [[true, true, true], [true, true, true], [true, true, true]], [[true, true, true], [true, true, true], [true, true, true]], [[true, true, true], [true, true, true], [true, true, true]], [[true, true, true], [true, true, true], [true, true, true]]]
Concatenation of tensor with a tensor #
data = dt.concatenate(dataList, dataList, axis: 2);
print("Concatenated Data: $data");
Output
Concatenated Data: [[[0, 1, 2, 0, 1, 2], [3, 4, 5, 3, 4, 5], [6, 7, 8, 6, 7, 8]], [[9, 10, 11, 9, 10, 11], [12, 13, 14, 12, 13, 14], [15, 16, 17, 15, 16, 17]], [[18, 19, 20, 18, 19, 20], [21, 22, 23, 21, 22, 23], [24, 25, 26, 24, 25, 26]], [[27, 28, 29, 27, 28, 29], [30, 31, 32, 30, 31, 32], [33, 34, 35, 33, 34, 35]], [[36, 37, 38, 36, 37, 38], [39, 40, 41, 39, 40, 41], [42, 43, 44, 42, 43, 44]]]
Sorting elements of a tensor #
data = dt.sort(dataList, desc: true);
print("Sorted Data: $data");
Output
Sorted Data: [[[44, 43, 42], [41, 40, 39], [38, 37, 36]], [[35, 34, 33], [32, 31, 30], [29, 28, 27]], [[26, 25, 24], [23, 22, 21], [20, 19, 18]], [[17, 16, 15], [14, 13, 12], [11, 10, 9]], [[8, 7, 6], [5, 4, 3], [2, 1, 0]]]
Author #
Contribution #
Happy 😍 to recieve contributions on this package.
Issues or Bugs #
Please report issue/ bug or request for any feature in the issue section.