C#で3次元配列の上限と下限を取得する方法
C#で配列の上限(インデックスの最大値)と下限(インデックスの最小値)を取得するには、それぞれ GetUpperBound() メソッドと GetLowerBound() メソッドを使用します。
これらのメソッドには、対象となる次元(ディメンション)のインデックスを引数として指定します。次元は0から始まる番号で表されます。
3次元配列での使い方
例として、次のような3次元配列を考えてみましょう。
int[,] arr = new int[2,3,4];
この配列に対して、各次元の上限と下限は以下のように取得できます。
次元0の場合
arr.GetUpperBound(0) arr.GetLowerBound(0)
次元1の場合
arr.GetUpperBound(1) arr.GetLowerBound(1)
次元2の場合
arr.GetUpperBound(2) arr.GetLowerBound(2)
サンプルプログラム
実際に3次元配列のすべての次元について、上限と下限を出力する完全なコード例を見てみましょう。
using System;
class Program {
static void Main() {
int[,] arr = new int[2,3,4];
Console.WriteLine("Dimension 0 Upper Bound: {0}",arr.GetUpperBound(0).ToString());
Console.WriteLine("Dimension 0 Lower Bound: {0}",arr.GetLowerBound(0).ToString());
Console.WriteLine("Dimension 1 Upper Bound: {0}",arr.GetUpperBound(1).ToString());
Console.WriteLine("Dimension 1 Lower Bound: {0}",arr.GetLowerBound(1).ToString());
Console.WriteLine("Dimension 2 Upper Bound: {0}",arr.GetUpperBound(2).ToString());
Console.WriteLine("Dimension 2 Lower Bound: {0}",arr.GetLowerBound(2).ToString());
}
}実行結果
Dimension 0 Upper Bound: 1 Dimension 0 Lower Bound: 0 Dimension 1 Upper Bound: 2 Dimension 1 Lower Bound: 0 Dimension 2 Upper Bound: 3 Dimension 2 Lower Bound: 0
解説
実行結果からわかるように、new int[2,3,4] で作成した配列では、各次元の要素数がそれぞれ2、3、4であるため、上限値は「要素数 − 1」となります。
- 次元0:要素数2 → 上限は1、下限は0
- 次元1:要素数3 → 上限は2、下限は0
- 次元2:要素数4 → 上限は3、下限は0
C#の通常の配列は下限が常に0であるため、GetLowerBound() の戻り値はすべての次元で0になります。ただし、非ゼロベースの配列を作成した場合には異なる値が返されることもあるため、汎用的なコードを書く際にはこれらのメソッドを使うのが安全です。
-
JavaScript配列から一意の値(重複なし)を取得する方法
JavaScriptの配列に含まれる重複した値を取り除き、一意の値(ユニークな値)だけを取得したい場合は、Setオブジェクトを使うのが最もシンプルで効率的な方法です。 Setは同じ値を1つしか格納できないデータ構造のため、配列をnew Set()に渡すだけで自動的に重複が排除されます。その後、スプレッド構文([...set])を使えば、簡単に元の配列形式へ戻すことができます。 サンプルコード 以下は、JavaScriptの配列からすべての一意の値を取得する実際のコード例です。 <!DOCTYPE html> <html lang=ja> <head> <
-
【NumPy】flatten()とravel()の違いを徹底解説!ビューとコピーの挙動・速度の違いを比較
NumPyでは、リストやタプルなどさまざまなデータから配列を作成できます。そして、多次元のndarrayを1次元配列へ変換する方法として、flatten()メソッドとravel()メソッドの2種類が用意されています。 一見すると両者はまったく同じ働きをするように見えますが、内部の動作には重要な違いがあります。この記事では、その違いをサンプルコードとともにわかりやすく解説します。 基本的な使い方 まずは、それぞれのメソッドを実際に使ってみましょう。 import numpy as np # リストから配列を作成 arr = np.array([(2, 7, 3, 4), (5, 6, 9, 1