NumPy 配列要素のアクセスと反復処理

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、NumPy 配列を反復処理して個々の要素にアクセスするためにnumpy.nditerオブジェクトをどのように使用するかを学びます。また、nditerオブジェクトのop_flagsパラメータを使用して配列の要素を変更する方法についても学びます。最後に、nditerオブジェクトを使用した NumPy 配列のブロードキャストについて学びます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替えて、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証は自動化できません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

ndarray を作成して numpy.nditer を使って反復処理する

このステップでは、arange() メソッドを使って一次元の NumPy 配列を作成し、その後 numpy.nditer オブジェクトを使ってその配列を反復処理します。

import numpy as np

a = np.arange(0,40,5)

print ("The Original array is:")
print (a)
print ('\n')

## showing elements of array one by one
print ("The Modified array is:")
for x in np.nditer(a):
    print(x)

配列の転置を反復処理する

このステップでは、二次元の NumPy 配列を取得し、その転置を求め、nditer オブジェクトを使ってその転置を反復処理します。

import numpy as np

a = np.array([[11,2,3,4],[29,4,15,6],[11,21,39,31]])
print("The array is :")
print(a)

print("The transpose of the array is :")
at = a.T
print(at)

print("Iterating over the array:")
for x in np.nditer(at):
    print(x, end=' ')

C スタイルの順序と F スタイルの順序で配列を反復処理する

このステップでは、二次元の NumPy 配列を作成し、その転置を求め、その後nditerオブジェクトを使って C スタイルと F スタイルの順序でその転置を反復処理します。

import numpy as np

a = np.array([[1,2,3,4],[8,9,5,6],[10,20,29,31]])
print("\nPrinting the array:\n")
print(a)

print("\nPrinting the transpose of the array:\n")
at = a.T
print(at)

print("\nIterating over the transposed array in F-style order:\n")
for x in np.nditer(at, order='F'):
    print(x, end=' ')

print("\nIterating over the transposed array in C-style order:\n")
for x in np.nditer(at, order='C'):
    print(x, end=' ')

ブロードキャストを使って複数の配列を反復処理する

このステップでは、異なる次元の 2 つの NumPy 配列を作成し、nditerオブジェクトを使ったブロードキャストを使ってそれらを反復処理します。

import numpy as np

a = np.arange(0,60,5)
a = a.reshape(3,4)

print ('The First array :')
print (a)
print ('\n')

print ('The Second array is')
b = np.array([1, 2, 3, 4], dtype = int)
print (b)
print ('\n' )

print ('The Modified array is')
for x,y in np.nditer([a,b]):
    print ("%d:%d" %(x,y))

op_flags を使って配列の値を変更する

このステップでは、一次元の NumPy 配列を作成し、op_flags パラメータを 'readwrite' に設定しながら nditer オブジェクトを使ってその配列を反復処理し、その後反復処理する際に配列の要素を変更します。

import numpy as np

a = np.arange(0,50,6)
a = a.reshape(3,3)

print ('The Original array is:')
print (a)
print ('\n')

for x in np.nditer(a, op_flags=['readwrite']):
    x[...] = 2 + x

print ('The Modified array is:')
print (a)

まとめ

この実験では、NumPy の nditer オブジェクトを使って配列を反復処理する方法と、op_flags パラメータを使って反復処理中に配列の要素を変更する方法を学びました。また、nditer オブジェクトを使って複数の配列を同時に反復処理することで、NumPy 配列におけるブロードキャストについても学びました。