NumPy データ解析基盤: ndarray 配列操作とスライス インデックス反復の基本操作

目次

序文

1. 基本的な数学的操作

1. 足し算と引き算

2.パワー

3.条件付きフィルタリング

4. 行列要素の乗算

5.行列乗算

6. 配列型の暗黙的な変換

2. スライスのインデックス作成と反復

1. 一次元配列

2. 多次元配列

注意してください、迷子にならないようにしてください。間違いがある場合は、メッセージを残してアドバイスをお願いします。どうもありがとうございました



序文

データ解析の三大巨頭、Pandas、matplotlib、NumPy の 1 つとして、顔については別途説明が必要です。NumPy アプリケーションのシナリオは非常に幅広く、多くの Pandas 関数が NumPy 配列データ構造に変換されます。機械学習、深層学習、および一部のデータ処理操作では、Pandas よりも頻繁に使用されます。さらに、NumPy は強力で使いやすく、さまざまな複雑な操作をサポートしています。私は通常、Pandas といくつかの機械学習の記事で NumPy を使用していますが、ブログ コンテンツでは NumPy の操作について詳しく説明しておらず、NumPy の操作に関する特定の関数の回答も記録していません。私のようなワンストップ サービスのニーズを追求するブロガーには本当に不適切なので、古いピットを埋めて、新しい 1 テキストの速度学習シリーズ - Numpy データ分析の基礎コラムを公開します。

この一連の記事は、私のコラム 1 である一連の高速学習 - NumPy データ分析基盤に含まれます。これは基本的に、NumPy データを使用して日常のビジネスとルーチンの数学的モデリング分析と複雑な操作を分析することをカバーしています。基本的な配列操作から、行列やベクトル機能の処理などの複雑な操作、およびプロの NumPy 共通関数まで、多くの時間と考えを費やして作成します. データ分析またはデータ開発に従事する必要がある場合, 数学的モデリング, 友達Python 工学の専門家がコラムを購読することをお勧めします. このブログは長くて、読んで実践する価値があります. 最良の部分を選んで、詳細に実践について話します. ブロガーはブログの投稿を長く続けますので、間違いや疑問点があればコメント欄で指摘していただけると助かります。

この章では主に、numpy 配列オブジェクト ndarray の基本的な数学演算 (加算、減算、乗算、除算の行列配列演算、および一般的で一般的に使用される数学関数など) について説明します。


1. 基本的な数学的操作

配列の算術演算子は要素ごとに実行され、新しい配列を作成して結果を入力します。

1. 足し算と引き算

a = np.array([20, 30, 40, 50])
b = np.arange(10,50,10)
c=a-b
c

 

2.パワー

a**2

 

3.条件付きフィルタリング

a<40

 

 多くの行列言語とは異なり、積演算子 * は NumPy 配列の要素を操作します。行列積は、@ 演算子 (Python バージョン >= 3.5) またはドット関数またはメソッドを使用して実行できます。

4. 行列要素の乗算

A = np.array([[1, 2],
              [3, 4]])
B = np.array([[5, 6],
              [7, 8]])
A*B

 

5.行列乗算

A@B

 

または、ドット関数を使用することも同じです:

A.dot(B)

 

 += や *= などの特定の操作は、新しい配列を作成するのではなく、既存の配列を変更します。

a = np.ones((2, 3), dtype=int)
a*=3
a

 

a = np.ones((2, 3), dtype=int)
b = np.zeros((2, 3), dtype=int)
b += a
b

 

6. 配列型の暗黙的な変換

異なる型の配列を操作する場合、結果の配列の型は、より一般的または正確な型に対応します (アップキャストと呼ばれる動作)。

a = np.ones((2, 3), dtype=int)
b = np.zeros((2, 3), dtype=float)
c=a+b
c.dtype.name

 

 配列内のすべての要素の合計を計算するなど、多くの単項演算は ndarray クラスのメソッドとして実装されています。

c.sum()
c.max()
c.min()

 デフォルトでは、これらの操作は、形状に関係なく、数値のリストであるかのように配列に適用されます。ただし、軸パラメーターを指定することにより、配列の指定された軸に沿って操作を適用できます。

b = np.arange(12).reshape(3, 4)
b

 

b.sum(axis=0)

 

b.min(axis=1)

 

b.cumsum(axis=1)

2. スライスのインデックス作成と反復

1. 一次元配列

1 次元配列は、リストやその他の Python シーケンスと同様に、インデックス付け、スライス、反復処理できます。

a=np.arange(10,20,2)
a[2]

 

a[2:5]

 

2. 多次元配列

多次元配列の各軸はインデックスを持つことができます。これらのインデックスは、コンマ区切りのタプルとして与えられます。

def f(x, y):
    return 10 * x + y
b = np.fromfunction(f, (5, 4), dtype=int)
b

 

b[2, 3]

 

b[0:5, 1] 

 

b[1:3, :]

 

軸の数よりも少ないインデックスが提供される場合、不足しているインデックスは完全なスライスとして扱われます。

b[-1]

 

b[i]の括弧内の式はiとして扱われ、残りの軸を表すために必要な数の:のインスタンスNumPy では、 b[i,...] のようにドットを使用して書き込む

ドット (...) は、完全なインデックス タプルを生成するために必要なコロンを表します。たとえば、x が 5 つの軸をもつ配列の場合、

  • x[1,2,…] は x[1,2,:,:,] と同等です
  • x[…,3] から x[:,:,::,:3]
  • x[4,...,5,:] から x[4,:,:,5,:]
c = np.array([[[  0,  1,  2],  
               [ 10, 12, 13]],
              [[100, 101, 102],
               [110, 112, 113]]])
c

 

c[1, ...]

 

c[..., 2]

 

最初の軸で多次元配列を反復します。

for row in b:
    print(row)

 

 ただし、配列内の各要素に対して操作を実行する場合は、配列のすべての要素に対する反復子である flat プロパティを使用できます。

for element in b.flat:
    print(element)

注意してください、迷子にならないようにしてください。間違いがある場合は、メッセージを残してアドバイスをお願いします。どうもありがとうございました

この問題は以上です。ご不明な点がございましたら、お気軽にメッセージを残してください。次号でお会いしましょう

 

おすすめ

転載: blog.csdn.net/master_hunter/article/details/127144925