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

NaNをゼロとして扱って配列要素の累積和を返し、Pythonで結果の型を変更する方法

指定した軸に沿って配列要素の累積和を返し、その際にNaN(非数)をゼロとして扱うには、NumPyのnancumsum()メソッドを使用します。このメソッドでは、NaNに遭遇しても累積和は変化せず、先頭のNaNはゼロに置き換えられます。また、すべてがNaNであるスライスや空のスライスに対しては、ゼロが返されます。

nancumsum()の主なパラメータ

  • 第1パラメータ(a):入力配列です。
  • 第2パラメータ(axis):累積和を計算する軸です。デフォルト値はNoneで、その場合はフラット化された配列全体に対して累積和が計算されます。
  • 第3パラメータ(dtype):返される配列の型、および要素を合計する際のアキュムレータの型を指定します。dtypeが指定されていない場合、aの整数型の精度がデフォルトのプラットフォーム整数より低い場合を除き、aのdtypeがデフォルトとして使用されます。その場合には、デフォルトのプラットフォーム整数が使われます。
  • 第4パラメータ(out):結果を格納する代替出力配列です。期待される出力と同じ形状とバッファ長を持つ必要がありますが、必要に応じて型はキャストされます。

実行手順

まず、必要なライブラリをインポートします。

import numpy as np

array()メソッドを使ってNumPy配列を作成します。ここでは、int型の要素にnanを混ぜた配列を作成しています。

arr = np.array([[10, 20, 30], [40, np.nan, 60]])

作成した配列を表示します。

print("Our Array...\n",arr)

配列の次元数を確認します。

print("\nDimensions of our Array...\n",arr.ndim)

配列のデータ型を取得します。

print("\nDatatype of our Array object...\n",arr.dtype)

NaNをゼロとして扱いながら、指定した軸に沿った配列要素の累積和を返すには、nancumsum()メソッドを使用します。ここでは、axis=1(行方向)とdtype=intを指定して呼び出しています。

print("\nCumulative Sum of array elements...\n",np.nancumsum(arr, axis = 1, dtype = int))

完全なコード例

import numpy as np

# array()メソッドを使ってNumPy配列を作成
# int型の要素にnanを追加している
arr = np.array([[10, 20, 30], [40, np.nan, 60]])

# 配列を表示
print("Our Array...\n",arr)

# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)

# データ型を取得
print("\nDatatype of our Array object...\n",arr.dtype)

# NaNをゼロとして扱い、指定した軸に沿った累積和を返す
# nancumsum()メソッドを使用
print("\nCumulative Sum of array elements...\n",np.nancumsum(arr, axis = 1, dtype = int))

実行結果

Our Array...
[[10. 20. 30.]
[40. nan 60.]]

Dimensions of our Array...
2

Datatype of our Array object...
float64

Cumulative Sum of array elements...
[[ 10 30 60]
[ 40 40 100]]

実行結果からわかるように、2行目のNaNはゼロとして扱われ、累積和の計算に影響を与えていません。また、dtype=intを指定することで、元の配列がfloat64型であっても、結果が整数型(int)で返されている点にも注目してください。これにより、結果のデータ型を柔軟に制御できます。

  1. Python NumPyのnp.log2()で入力配列の底2の対数を計算する方法

    PythonのNumPyで入力配列の各要素に対して底2の対数(log₂)を求めるには、numpy.log2()メソッドを使用します。このメソッドは引数xの底2の対数を返します。xがスカラーの場合、戻り値もスカラーになります。numpy.log2()の主なパラメータ第1パラメータ:x — 入力値を指定します。配列のようなオブジェクト(array-like)を受け付けます。第2パラメータ:out — 計算結果を格納する場所を指定します。指定する場合は、入力がブロードキャストされる形状と一致している必要があります。省略した場合やNoneを指定した場合は、新しく確保された配列が返されます。タプルで指定

  2. Python・NumPyで文字列配列の各要素の長さを取得する方法

    文字列配列の各要素の長さを要素ごとに取得したい場合は、PythonのNumPyが提供する numpy.char.str_len() メソッドを使用します。このメソッドは、各文字列の長さを格納した整数型の出力配列を返します。実行手順まず、必要なライブラリをインポートします。import numpy as np次に、1次元の文字列配列を作成します。arr = np.array([Amy, Scarlett, Katie, Brad, Tom])作成した配列を表示してみましょう。print(Array...\n,arr)配列のデータ型を確認します。print(\nArray datatype...\