Numpy 配列内の要素を移動する方法 (例あり)


次のいずれかの方法を使用して、NumPy 配列の要素をオフセットできます。

方法 1: 要素をシフトする (元の要素をすべて保持)

 #shift each element two positions to the right
data_new = np. roll (data, 2)

方法 2: 要素をシフトする (要素を置換できるようにする)

 #define shifting function
def shift_elements (arr, num, fill_value):
    result = np. empty_like (arr)
    if num > 0:
        result[:num] = fill_value
        result[num:] = arr[:-num]
    elif num < 0:
        result[num:] = fill_value
        result[:num] = arr[-num:]
    else :
        result[:] = arr
    return result

#shift each element two positions to the right (replace shifted elements with zero)
data_new = shift_elements(data, 2, 0)

次の例は、各メソッドを実際に使用する方法を示しています。

方法 1: 要素をシフトする (元の要素をすべて保持)

次のコードは、 np.roll()関数を使用して、NumPy 配列の各要素を 2 位置右にシフトする方法を示しています。

 import numpy as np

#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])

#shift each element two positions to the right
data_new = np. roll (data, 2)

#view new NumPy array
data_new

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

各要素は右に 2 位置シフトされ、配列の末尾の要素は単に前方に移動されていることに注意してください。

np.roll()関数で負の数を使用して要素を左にシフトすることもできます。

 import numpy as np

#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])

#shift each element three positions to the left
data_new = np. roll (data, -3)

#view new NumPy array
data_new

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

方法 2: 要素をシフトする (要素を置換できるようにする)

また、NumPy 配列の要素をシフトし、シフトされた要素を特定の値で置き換えることを可能にするカスタム関数を定義することもできます。

たとえば、要素をシフトし、シフトされたすべての要素を値 0 に置き換える次の関数を定義できます。

 import numpy as np

#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])

#define custom function to shift elements
def shift_elements (arr, num, fill_value):
    result = np. empty_like (arr)
    if num > 0:
        result[:num] = fill_value
        result[num:] = arr[:-num]
    elif num < 0:
        result[num:] = fill_value
        result[:num] = arr[-num:]
    else :
        result[:] = arr
    return result

#shift each element two positions to the right and replace shifted values with zero
data_new = shift_elements(data, 2, 0)

#view new NumPy array
data_new

array([0, 0, 1, 2, 3, 4])

関数内で負の数を使用して要素を左にシフトすることもできます。

 import numpy as np

#create NumPy array
data = np. array ([1, 2, 3, 4, 5, 6])

#define custom function to shift elements
def shift_elements (arr, num, fill_value):
    result = np. empty_like (arr)
    if num > 0:
        result[:num] = fill_value
        result[num:] = arr[:-num]
    elif num < 0:
        result[num:] = fill_value
        result[:num] = arr[-num:]
    else :
        result[:] = arr
    return result

#shift each element three positions to the left and replace shifted values with 50
data_new = shift_elements(data, -3, 50)

#view new NumPy array
data_new

array([ 4, 5, 6, 50, 50, 50])

追加リソース

次のチュートリアルでは、NumPy で他の一般的な操作を実行する方法について説明します。

NumPy で要素の出現をカウントする方法
NumPy 配列を列でソートする方法
NumPy配列のモードを計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です