(すなわち行0であります行1は第2行、列0は第1列、列1は第2列など)を使用して、説明およびコード実施を容易にする。
ロジック
は、(配列a
それを呼び出す)私たちは、このようなnumpyの配列を持っていると言う - あなたの仕様に従って、最初の行の両方の列は同じです。
a = np.array(
[
[10, 10],
[15, None],
[50, None]
]
)
- あなたは3として
n
(行数)を設定します。
- ルーピングバリアント
j
は、インデックス1
(範囲内)からn
(範囲外)までの範囲をとります。ダミーの例では、j
は1
,2
となります。 (すなわち、2つのループ)
numpyの索引付けは、次のように見えることに注意してください。
a[0][1]
は、最初の行(行0)、第二のカラム(COL 1)を意味します。
a[1][1]
は、第2行(行1)、第2列(列1)を意味する。さもなければ
if abs(a[j-1][1] - a[j][0]) < 20
...その後a[j][1] = a[j-1][1]
- 、
a[j][1] = a[j][0]
即ち:
条件ビーイング予想される出力:
を作成します。
[
[10, 10],
[15, 10],
[50, 50]
]
コード
は、これは私が元からのご質問の名前を変更するために、あなたを示唆し、
import numpy as np
# Create a sample numpy array as per specification
a = np.array(
[
[10, 10],
[15, None],
[50, None]
]
)
# get number of rows there are for looping upper bound
# for our dummy example, n = 3
n = a.shape[0]
# do the loop
for j in range(1, n):
if abs(a[j-1][1] - a[j][0]) < 20:
a[j][1] = a[j-1][1]
else:
a[j][1] = a[j][0]
# the array `a` is now is now updated to...
# array([[10, 10],
# [15, 10],
# [50, 50]], dtype=object)
またストレートnumpyの実装です別の列の行の値に基づいて列を作成します。新たに
:別の列の行の値に基づいて
更新カラム。
...常に2つの列しかないので(多くの行になることがあります)
これは非常にうまく動作します。これはちょっと関係ないことが分かっていますが、np.arrayの行数に「n」というラベルを付けるにはどうすればよいですか? –
'n、_ = arr.shape' – csander