Python
 Computer >> コンピューター >  >> プログラミング >> Python

NumPyPythonでの基本的なスライシングと高度なインデックス作成


ndarrayのインデックス付けは、標準のpython x [obj]構文を使用して実行できます。ここで、xは配列であり、objは選択です。

利用可能なインデックスには3種類あります-

  • フィールドアクセス
  • 基本的なスライス
  • 高度なインデックス作成

どのような種類のインデックスが作成されるかは、objによって異なります。このセクションでは、主に基本的なスライスと高度なインデックス作成に焦点を当てます。

高度なインデックス作成は2つの部分に分けることができます-

  • 整数配列のインデックス作成
  • ブールインデックス

基本的なスライス

スライスのPythonの基本概念は、基本的なスライスでn次元に拡張されています。スライス関数に開始、停止、およびステップのパラメーターを指定することによって構築されるPythonスライスオブジェクトと同様です。特定の出力を取得するには、スライスオブジェクトを配列に渡して、配列の一部を抽出します。

例1

import numpy as np
arr = np.arange(25)
s = slice(2, 21, 4)
print (arr[s])

出力

[ 2 6 10 14 18]

上記の例では、最初にarange()関数を使用してndarrayオブジェクト(arr)を作成しました。次に、開始、停止、およびステップ値を割り当てることにより、スライスオブジェクトが作成されます。スライスオブジェクトをndarrayに渡すと、インデックス2から21までの配列の一部(スライス)が4ステップで取得されます。

上記のプログラムを作成する別の方法

# Another way to write above program
import numpy as np
arr = np.arange(25)
s = arr[2:21:4]
print (s)
として記述する別の方法

出力

[ 2 6 10 14 18]

単一のアイテムをスライス

#Slice single item from an array
import numpy as np
arr = np.arange(10)
s = arr[9]
print(s)
としてスライスします

出力

9

インデックスから始まるスライスアイテム

#slice item starting from index
import numpy as np
arr = np.arange(10)
s = arr[3:]
print(s)

出力

[3 4 5 6 7 8 9]

インデックス間のアイテムのスライス

#slice item between indexes
import numpy as np
arr = np.arange(10)
s = arr[3: 7]
print(s)

出力

[3 4 5 6]

上記の2つの方法は、以下のように多次元ndarrayにも適用されます-

#slice item between indexes
import numpy as np
arr = np.array([[[1],[2],[3]], [[4],[5],[6]], [[7], [8], [9]]])
s = arr[1:]
print(s)

出力

[[[4]
[5]
[6]]
[[7]
[8]
[9]]]

高度なインデックス作成

整数配列のインデックス作成:

整数を使用して単純な配列を作成しましょう

arr=np.array([[1,2],[3,4],[5,6]])
print(arr)

出力

[[1 2]
[3 4]
[5 6]]

多次元配列の行インデックス[0、1、2]と列インデックス[1、0、1]の要素など、配列から特定の要素を選択してみましょう。

import numpy as np
arr=np.array([[1,2],[3,4],[5,6]])
s = arr[[0, 1, 2],[1, 0, 1]]
print(s)

出力

[2 3 6]

インデックスを0で選択すると、最初の行が表示されます-

>>> arr=np.array([[1,2],[3,4],[5,6]])
>>> print(arr[0])
[1 2]

同様に、配列から1つの項目を選択できます。たとえば、1を行インデックスとして選択し、1を列インデックス要素として選択して配列値4を指定します。

>>> print(arr[[1], [1]])
[4]

加算のような算術演算が可能で、加算を実行した後に特定のインデックスの値を返します。

>>> print(arr[[1], [1]]+ 1)
[5]

ご覧のとおり、インデックス値は1ずつ増加しますが、実際の配列は同じままです。

>>> arr
array([[1, 2],
[3, 4],
[5, 6]])

ただし、配列の値を変更して、配列の新しいコピーを返すことはできます。

>>> arr[[1], [1]] +=1
>>> arr
array([[1, 2],
[3, 5],
[5, 6]])

ブールインデックス作成

結果がブール演算の結果になる場合は、ブールインデックスを使用しました。

>>> arr=np.array([[0,1,2], [3,4,5], [6,7,8], [9,10,11]])
>>> arr
array([[ 0, 1, 2],
   [ 3, 4, 5],
   [ 6, 7, 8],
   [ 9, 10, 11]])

1の値を返します。

>>> arr[arr == 1]
array([1])

偶数の値を返します

>>> arr[arr %2 == 0]
array([ 0, 2, 4, 6, 8, 10])

  1. Pythonの基本的な日付と時刻のタイプ

    Pythonで日付と時刻を操作するために、datetimeというモジュールがあります。日付と時刻のオブジェクトには2つのタイプがあります。タイプはナイーブで認識しています。 ナイーブオブジェクトには、他の日時オブジェクトからこのオブジェクトを明確に見つけるための十分な情報がありません。このアプローチでは、協定世界時(UTC)を使用します。 認識型オブジェクトには、アルゴリズム的および政治的な時間調整に関するさまざまな情報があります。このタイプのオブジェクトは、特定の瞬間を表すために使用されます。 このモジュールを使用するには、-を使用してインポートする必要があります import da

  2. Pythonを使用して配列リストの0と1を分離しますか?

    リスト内包表記は、Pythonで人気のある手法です。ここでは、この手法を使用します。ユーザー入力配列を作成します。配列要素はランダムな順序で0と1である必要があります。次に、左側の0と右側の1を分離します。配列をトラバースし、2つの異なるリストを分離します。1つは0を含み、もう1つは1を含み、2つのリストを連結します。 例 Input:: a=[0,1,1,0,0,1] Output::[0,0,0,1,1,1] アルゴリズム seg0s1s(A) /* A is the user input Array and the element of A should be the combin