Numpy:配列オブジェクトの定義と作成(Ndarray)


配列定義

配列オブジェクト(Ndarray)は複合語です。ここで、Nは数値、d(次元)次元、配列(配列)、N次元配列とも呼ばれます。


配列を作成する

配列を作成する方法はたくさんありますが、関数によって次の3つのタイプに分類できます。

1.既存のデータから作成する

方法 説明する
numpy.array(object) 配列を作成する
numpy.asarray(a) 入力を配列に変換します。
numpy.asanyarray(a) 入力をndarrayに変換しますが、ndarrayサブクラスを渡します。
numpy.ascontiguousarray(a) メモリ内の連続した配列を返します(ndim> = 1)
numpy.asmatrix(data) 入力を行列として解釈します。
numpy.copy(a) 指定されたオブジェクトの配列コピーを返します。
numpy.frombuffer(buffer) バッファーを1次元配列として解釈します。
numpy.fromfile(file) テキストまたはバイナリファイルのデータから配列を作成します
numpy.fromfunction(func) 各座標で関数を実行して配列を作成します。
numpy.fromiter(iter) 反復可能なオブジェクトから新しい1次元配列を作成します。
numpy.fromstring(string) 文字列内のテキストデータから初期化された新しい1次元配列。
numpy.loadtxt(fname) テキストファイルからデータをロードします。

構文と例を説明するために、一般的に使用される関数のみを使用してください。

配列()

numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None)

参照されるオブジェクトのデータをコピーして配列を作成します。

パラメータの説明:

  • object:array_like、配列インターフェースを受け入れる任意のオブジェクト、またはデフォルト値のない任意の(ネストされた)シーケンスを受け入れます。
  • dtype:配列を表すために必要なデータ型。指定しない場合、タイプは、オブジェクトをシーケンス内に保持するために必要な最小のタイプであると判断されます。
  • copy:デフォルトはTrueで、オブジェクトをコピーします。
  • order:配列のメモリレイアウトを指定します。オプション:{'K'、'A'、'C'、'F'}、デフォルト:'C'。
  • subok:Trueの場合、サブクラスが渡されます。それ以外の場合、返された配列は基本クラスの配列に強制変換されます(デフォルト)。
  • ndmin:結果の配列に必要な次元の最小数を指定します
  • like:NumPy配列ではない配列を作成できるようにする参照オブジェクト。

戻り値:

  • ndarray

例:

>>> import numpy as np
>>> arr01 = np.array([1,2,3,4], dtype=np.int8)
array([1, 2, 3, 4], dtype=int8)

asarray()

numpy.asarray(a, dtype=None, order=None, *, like=None)

入力を配列に変換します。

パラメータの説明:

  • a:配列に変換できる任意の形式の入力データ。これには、リスト、タプルのリスト、タプル、タプルのタプル、リストのタプル、およびndarrayが含まれます。
  • dtype:データ型、オプション。デフォルトでは、データ型は入力データから推測されます。
  • order:配列のメモリレイアウトを指定します。オプション:{'K'、'A'、'C'、'F'}、デフォルト:'C'。
  • like:NumPy配列ではない配列を作成できるようにする参照オブジェクト。

戻り値:

  • ndarray

例:

>>> import numpy as np
>>> arr01 = np.array([1,2,3,4], dtype=np.float32)
>>> arr02 = np.asarray(arr01) # 直接引用arr01的数据,不复制
array([1, 2, 3, 4], dtype=int8)

# 当数据类型dtype相同时直接引用数据
>>> np.asarray(arr01, dtype=np.float32) is arr01
True

# 当数据类型dtype不相同时复制数据
>>> arr01 = np.array([1,2,3,4], dtype=np.float32)
>>> np.asarray(arr01, dtype=np.float64) is arr01
False

:array()とasarray()の違いは、array()がデータを直接コピーし、asarray()がdtypeが同じ場合に参照を作成し、データをコピーしないことです。データはdtypeの場合にのみコピーされます。使用されません。

2.値の範囲から作成します

方法 説明する
numpy.arange() 指定された間隔内で等間隔の値の配列を返します。
numpy.linspace() 指定された間隔内で均等に分散された数値を返します。
numpy.logspace() 対数スケールで均等に分散された数値を返します。
numpy.geomspace() 対数スケール(等比数列)で均一に分布している数値を返します。
numpy.meshgrid() 座標ベクトルから座標行列を返します。
numpy.mgrid() 高密度の多次元「グリッド」を返します。
numpy.ogrid() 開いた多次元の「グリッド」を返します。

arange()

numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)

指定された範囲内の等間隔の値の配列を返します。

パラメータの説明:

  • start:開始値、整数または実数を受け取ります。デフォルトの開始値は0です。
  • stop:終了値(終了値を除く)、整数または実数を受け取ります。デフォルト値はありません。
  • ステップ:ステップサイズ、値の間隔、整数または実数を受け入れます。デフォルトは1です。
  • dtype:データ型。デフォルトなし。dtypeが指定されていない場合、データ型は他の入力パラメーターから推測されます。
  • like:NumPy配列ではない配列を作成できるようにする参照オブジェクト。

戻り値:

  • ndarray

例:

>>> np.arange(3,7)
array([3, 4, 5, 6])

linspace()

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

等差数列の配列を返します。

パラメータの説明:

  • start:シーケンスの開始値であるarray_likeを受け取ります。
  • stop:シーケンスの終了値であるarray_likeを受け取ります。
  • num:int(負でない必要があります)、生成するサンプルの数を受け取ります。デフォルト値は50です。
  • エンドポイント:ブール値を受け入れます。Trueの場合は終了値が含まれ、それ以外の場合は終了値は含まれません。デフォルトはtrueです。
  • retstep:ブール値を受け取ります。Trueの場合、(samples、step)を返します。ここで、stepはサンプル間の間隔です。デフォルトはFalseです。
  • dtype:出力配列のタイプ。
  • axis:intを受け取ります。結果にサンプルを格納するために使用される軸。

戻り値:

  • サンプル:ndarray
  • step:retstepがTrurのときに戻ります。サンプル間の間隔のサイズ。

例:

>>> np.linspace(2.0, 3.0, num=5)
array([2.  , 2.25, 2.5 , 2.75, 3.  ])

>>> np.linspace(2.0, 3.0, num=5, endpoint=False)
array([2. ,  2.2,  2.4,  2.6,  2.8])

>>> np.linspace(2.0, 3.0, num=5, retstep=True)
(array([2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)

logspace()

numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)

比例シーケンスの配列を返します。

パラメータの説明:

  • start:シーケンスの開始値であるarray_likeを受け取ります。
  • stop:シーケンスの終了値であるarray_likeを受け取ります。
  • num:int(負でない必要があります)、生成するサンプルの数を受け取ります。デフォルト値は50です。
  • エンドポイント:ブール値を受け入れます。Trueの場合は終了値が含まれ、それ以外の場合は終了値は含まれません。デフォルトはtrueです。
  • base:対数の底。デフォルト値は10.0です。
  • dtype:出力配列のタイプ。
  • axis:intを受け取ります。結果にサンプルを格納するために使用される軸。

戻り値:

  • サンプル:ndarray

例:

>>> np.logspace(2.0, 3.0, num=4)
array([ 100.,  215.443469,  464.15888336, 1000. ])

>>> np.logspace(2.0, 3.0, num=4, endpoint=False)
array([100.,  177.827941,  316.22776602,  562.34132519])

>>> np.logspace(2.0, 3.0, num=4, base=2.0)
array([4.,  5.0396842, 6.34960421,  8.])

3.形状または値から作成します

方法 説明する
numpy.empty(shape) 指定された形状とタイプの新しい配列を返します
numpy.empty_like(プロトタイプ) 指定された配列と同じ形状とタイプの新しい配列を返します。
numpy.eye(N) 対角線上に1があり、他の場所に0がある2D配列を返します。
numpy.identity(n) IDの配列を返します。
numpy.ones(形状) 指定された形状とタイプの新しい配列を1つで埋めて返します。
numpy.ones_like(a) 指定された配列と同じ形状とタイプの配列を返します。
numpy.zeros(形状) 指定された配列と同じ形状およびタイプのゼロの配列を返します。
numpy.zeros_like(shape) 指定された配列と同じ形状とタイプの配列を返します。
numpy.full(shape、fill_value) fill_valueで満たされた、指定された形状とタイプの新しい配列を返します
numpy.full_like(a、fill_value) 指定された配列と同じ形状と型の完全な配列を返します。

ones()

numpy.ones(shape, dtype=None, order='C', *, like=None)

値がすべて1である指定された形状とデータ型の配列を返します。

パラメータの説明:

  • shape:intまたはintを含むシーケンス、配列の形状を受け取ります。通常、タプル(行数、列数)を使用します。
  • dtype:接收data-type或者numpy的数据类型,默认为numpy.float64。元素数据类型。
  • order:可选{‘C’, ‘F’},默认为:‘C’。在内存中以行优先(C 风格)或列优先(Fortran 风格)的顺序存储多维数据。
  • like:引用对象以允许创建不是 NumPy 数组的数组。

返回值:

  • out:ndarray

示例:

>>> np.ones(shape=(5,2), dtype=int)
array([[1, 1],
       [1, 1],
       [1, 1],
       [1, 1],
       [1, 1]])

ones_like()

numpy.ones_like(a, dtype=None, order='K', subok=True, shape=None)

返回一个值都是1,形状和参数a相同的数组。

参数说明:

  • a:接收类似数组的对象,a的形状和数据类型传递给了新的数组。
  • dtype:接收data-type或者numpy的数据类型,默认为numpy.float64。元素数据类型。
  • order:可选{‘C’, ‘F’},默认为:‘C’。在内存中以行优先(C 风格)或列优先(Fortran 风格)的顺序存储多维数据。
  • subok:接收布尔值,如果为 True,则新创建的数组将使用a的子类类型,否则它将是基类数组。默认为真。
  • shape:接收整数或整数序列,

返回值:

  • out:ndarray

示例:

>>> arr01 = np.arange(10,34).reshape(4,6)
>>> arr02 = np.ones_like(arr01)
array([[1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1]])

其他函数原理同ones()和ones_like(),只是生成的数组中元素的值不一样,参数也类似。可以举一反三使用。

おすすめ

転載: blog.csdn.net/shield911/article/details/124073875