パッケージ、リポジトリ、アプリカテゴリを検索

GitHub リポジトリbabincc/n_dimensional_array

n次元配列

名前が示すように、n_dimensional_array を使用すると、n 次元の配列またはリストを作成できます。

n次元配列 のプロジェクト画像
スター
0
フォーク
0
最終プッシュ(UTC)
2025/02/20
プロジェクト状態
公開中

元の README

以下は英語原文のスナップショットです。最新版は GitHub をご覧ください。

n-Dimensional Array

Multidimensional array graphic

The n-Dimensional Array package is a powerful tool that empowers Flutter developers to create and work with multi-dimensional arrays. With this package, developers can easily define and manipulate n-dimensional arrays in their applications. This package offers a simple and intuitive interface to handle arrays of various dimensions efficiently.

Installation

In the pubspec.yaml of your flutter project, add the following dependency:

dependencies:
  n_dimensional_array: ^1.0.4

Import it to each file you use it in:

import 'package:n_dimensional_array/n_dimensional_array.dart';

Usage

Example 1 - Create multi-dimensional array

This example shows how to create a multi-dimensional array using three different methods.

Note: Each method creates the same end product.

List myList = [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]];

// Method 1
NdArray ndArray1 = NdArray.fromList(myList);

// Method 2
NdArray ndArray2 = NdArray(3);

ndArray2.data = myList;

// Method 3
NdArray ndArray3 = NdArray(3);

ndArray3.reshape([3, 2, 2]);

ndArray3[0][0][0] = 1;
ndArray3[0][0][1] = 2;
ndArray3[0][1][0] = 3;
ndArray3[0][1][1] = 4;
ndArray3[1][0][0] = 5;
ndArray3[1][0][1] = 6;
ndArray3[1][1][0] = 7;
ndArray3[1][1][1] = 8;
ndArray3[2][0][0] = 9;
ndArray3[2][0][1] = 10;
ndArray3[2][1][0] = 11;
ndArray3[2][1][1] = 12;
Example 2 - Reshape

Just like with a normal list in Dart, you cannot add elements beyond the length of the list. For a list, you would use the add() method. Expanding a multi-dimensional list is a bit more complicated; so, the reshape method was created.

// The list from Example 1
List myList = [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]];

NdArray ndArray = NdArray.fromList(myList);

// The current shape is [3, 2, 2]
List<int> shape = ndArray.shape;

// Add one more element to the 3rd dimension
ndArray.reshape([3, 2, 3]);

// Note: Since we are only changing the third
// dimension, we could alternatively call:
// ndArray.reshape([-1, -1, 3]);
// The `-1` counts as a placeholder, and the
// original shape value is used.

// The list now looks like:
// [[[1, 2, null], [3, 4, null]], [[5, 6, null], [7, 8, null]], [[9, 10, null], [11, 12, null]]];

// Shrink the array down.
ndArray.reshape([1, 1, 2]);

// The list now looks like:
// [[[1, 2]]]
// Note: The truncated data is lost. Be careful
// when shrinking your arrays. Make sure that is
// really what you want to do.
Example 3 - Getting and Setting values

You can get or set a value very much like a normal list, where you would call myList[i].

// 2D list is easier to follow
List myList = [[1, 2], [3, 4]];

NdArray ndArray = NdArray.fromList(myList);

// Some current values
int value1 = ndArray[0][1]; // 2
int value2 = ndArray[1][1]; // 4

// Set a value
ndArray[0][1] = 8;

value1 = ndArray[0][1]; // 8

// The list now looks like:
// [[1, 8], [3, 4]]
Example 4 - Copy

When you use the copy() method, you create a new NdArray that is identical to the original. Any modifications to one does not affect the other.

Note: Any non-primitive data types that use references (like custom objects) might not create new versions of themselves when copied. If this is the case, changes to one of those objects will appear in both NdArrays.

// 2D list is easier to follow
List myList = [[1, 2], [3, 4]];

NdArray ndArray = NdArray.fromList(myList);
NdArray ndArrayCopy = ndArray.copy();

// Change only the copy
ndArrayCopy[0][0] = 99;

// The lists now look like:
// ndArray.data == [[1, 2], [3, 4]]
// ndArrayCopy.data == [[99, 2], [3, 4]]

If you found this helpful, please consider donating. Thanks!

buy me a coffee      paypal      venmo



Christian Babin GitHub avatar
GitHub 作者

Christian Babin ↗

言語DartC++CMakeSwiftCHTMLKotlinObjective-C

このリポジトリが公開するパッケージ

使用している依存関係

依存関係一覧 3 件

プロジェクトに合うリポジトリを選ぶには?

用途で絞り込み、開発状況を比較し、採用前に元のリポジトリで要件を確認しましょう。

  1. 名前・作者・説明で検索し、技術トピックで絞り込みます。
  2. スター、フォーク、最近のプッシュを比較します。スターは関心の目安であり、品質の保証ではありません。
  3. 利用前に GitHub で README、ライセンス、Issues を確認します。

情報源と管理

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗