ホームページ > バックエンド開発 > Python チュートリアル > numpy 配列の簡単な例 splicing_python

numpy 配列の簡単な例 splicing_python

韦小宝
リリース: 2017-12-16 13:06:11
オリジナル
2330 人が閲覧しました

この記事では、主に numpy 配列の概要、numpy 配列のプロパティなど、numpy 配列のスプライシングの簡単な例を紹介します。必要な友人は参考にしてください。

NumPy 配列は、ndarray と呼ばれる多次元配列オブジェクトです。これは 2 つの部分で構成されます:

·実際のデータ

·これらのデータを説明するメタデータ

ほとんどの操作はメタデータのみを対象とし、基礎となる実際のデータは変更しません。

NumPy 配列について知っておくべきことがいくつかあります:

· NumPy 配列の添字は 0 から始まります。

·同じ NumPy 配列内のすべての要素の型は同じである必要があります。

NumPy配列のプロパティ

NumPy配列を詳しく紹介する前に。まず、NumPy 配列の基本プロパティを詳しく紹介します。 NumPy 配列の次元はランクと呼ばれ、1 次元配列のランクは 1、2 次元配列のランクは 2 などとなります。 NumPy では、各線形配列は軸 (axes) と呼ばれ、ランクは実際には軸の数を表します。たとえば、2 次元配列は 2 つの 1 次元配列と等価で、最初の 1 次元配列の各要素は別の 1 次元配列です。したがって、1 次元配列は NumPy の軸 (axes) です。最初の軸は基になる配列に相当し、2 番目の軸は基になる配列内の配列になります。軸の数、つまりランクは配列の次元です。

NumPy 配列のより重要な ndarray オブジェクト属性は次のとおりです:

1.ndarray.ndim: 配列の次元 (つまり、配列軸の数)。ランクに等しい。最も一般的なのは 2 次元配列 (行列) です。

2.ndarray.shape: 配列の次元。各次元の配列のサイズを表す整数のタプルです。たとえば、2次元配列の場合、配列の「行数」と「列数」を表します。 ndarray.shape は、長さが次元数、つまり ndim 属性であるタプルを返します。

3.ndarray.size: 配列要素の合計数は、shape 属性のタプル要素の積に等しくなります。

4.ndarray.dtype: 配列内の要素の型を表すオブジェクト。標準の Python 型を使用して作成または指定できます。また、前回の記事で紹介したNumPyが提供するデータ型も利用できます。

5.ndarray.itemsize: 配列内の各要素のバイト サイズ。たとえば、要素タイプが float64 である配列の itemsiz 属性値は 8 です (float64 は 64 ビットを占有し、各バイトの長さは 8 であるため、64/8 で 8 バイトを占有します)。別の例は、要素タイプが次の配列です。 complex32。配列項目の属性は 4 (32/8) です。

6.ndarray.data: 実際の配列要素を含むバッファ。要素は通常、配列のインデックスを通じて取得されるため、通常はこの属性を使用する必要はありません。

配列の結合方法1

アイデア: まず配列をリストに変換し、次にリストの結合関数append()、extend()などを使用して結合処理を実行し、最後にリストをリストに変換します。配列。

例 1:


>>> import numpy as np
>>> a=np.array([1,2,5])
>>> b=np.array([10,12,15])
>>> a_list=list(a)
>>> b_list=list(b)
>>> a_list.extend(b_list)
>>> a_list
[1, 2, 5, 10, 12, 15]
>>> a=np.array(a_list)
>>> a
array([ 1, 2, 5, 10, 12, 15])
ログイン後にコピー


この方法は、単純な 1 次元配列の結合にのみ適しています。変換プロセスには時間がかかるため、大量のデータの結合には一般的に推奨されません。

配列のスプライシング方法 2

アイデア: numpy は、numpy.append(arr,values,axis=None) 関数を提供します。パラメーターを指定するには、1 つの配列と 1 つの値、または 2 つの配列を直接追加して結合することはできません。 append 関数は常に 1 次元配列を返します。

例 2:


>>> a=np.arange(5)
>>> a
array([0, 1, 2, 3, 4])
>>> np.append(a,10)
array([ 0, 1, 2, 3, 4, 10])
>>> a
array([0, 1, 2, 3, 4])
 
>>> b=np.array([11,22,33])
>>> b
array([11, 22, 33])
>>> np.append(a,b)
array([ 0, 1, 2, 3, 4, 11, 22, 33])
 
>>> a
array([[1, 2, 3],
    [4, 5, 6]])
>>> b=np.array([[7,8,9],[10,11,12]])
>>> b
array([[ 7, 8, 9],
    [10, 11, 12]])
>>> np.append(a,b)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
ログイン後にコピー


Numpy の配列には、サイズを動的に変更する機能がありません。numpy.append() 関数は、毎回配列全体を再割り当てし、元の配列を新しい配列にコピーします。 。

配列の結合方法 3

アイデア: numpy は、numpy.concatenate((a1,a2,...),axis=0) 関数を提供します。複数のアレイのスプライシングを一度に完了できます。ここで、a1、a2、... は配列型のパラメーターです

例 3:


>>> a=np.array([1,2,3])
>>> b=np.array([11,22,33])
>>> c=np.array([44,55,66])
>>> np.concatenate((a,b,c),axis=0) # 默认情况下,axis=0可以不写
array([ 1, 2, 3, 11, 22, 33, 44, 55, 66]) #对于一维数组拼接,axis的值不影响最后的结果
 
>>> a=np.array([[1,2,3],[4,5,6]])
>>> b=np.array([[11,21,31],[7,8,9]])
>>> np.concatenate((a,b),axis=0)
array([[ 1, 2, 3],
    [ 4, 5, 6],
    [11, 21, 31],
    [ 7, 8, 9]])
>>> np.concatenate((a,b),axis=1) #axis=1表示对应行的数组进行拼接
array([[ 1, 2, 3, 11, 21, 31],
    [ 4, 5, 6, 7, 8, 9]])
ログイン後にコピー


2 つの関数 numpy.append() と numpy.concatenate() の実行時間を比較します

例 4 :


>>> from time import clock as now
>>> a=np.arange(9999)
>>> b=np.arange(9999)
>>> time1=now()
>>> c=np.append(a,b)
>>> time2=now()
>>> print time2-time1
28.2316728446
>>> a=np.arange(9999)
>>> b=np.arange(9999)
>>> time1=now()
>>> c=np.concatenate((a,b),axis=0)
>>> time2=now()
>>> print time2-time1
20.3934997107
ログイン後にコピー


concatenate() の方が効率的で、大規模なデータの結合に適していることがわかります

まとめ

上記は、簡単なデータの結合に関するこの記事の全内容ですnumpy 配列のスプライシングの例。皆さんのお役に立てば幸いです。興味のある方は、引き続きこのサイトを参照してください:

関連する推奨事項:

numpy 行列メソッドに列を追加する Python プログラミングの例

に基づいて対称行列を作成する Python メソッドnumpy モジュール

Python の numpy ライブラリ

以上がnumpy 配列の簡単な例 splicing_pythonの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート