NumPyArray にセット内の値があるかどうかを確認したい場合は、配列内のその領域を 1 に設定します。ない場合は、keepRaster を 2 に設定します。
numpyArray = #some imported array
repeatSet= ([3, 5, 6, 8])
confusedRaster = numpyArray[numpy.where(numpyArray in repeatSet)]= 1
収量:
<type 'exceptions.TypeError'>: unhashable type: 'numpy.ndarray'
それをループする方法はありますか?
for numpyArray
if numpyArray in repeatSet
confusedRaster = 1
else
keepRaster = 2
明確にして、もう少し助けを求めるには:
私が取得しようとしていること、および現在行っていることは、ラスター入力を配列に入れることです。2 次元配列の値を読み取り、それらの値に基づいて別の配列を作成する必要があります。配列値がセット内にある場合、値は 1 になります。セット内にない場合、値は別の入力から導出されますが、ここでは 77 とします。これは私が現在使用しているものです。私のテスト入力には、約 1500 行と 3500 列があります。行 350 付近で常にフリーズします。
for rowd in range(0, width):
for cold in range (0, height):
if numpyarray.item(rowd,cold) in repeatSet:
confusedArray[rowd][cold] = 1
else:
if numpyarray.item(rowd,cold) == 0:
confusedArray[rowd][cold] = 0
else:
confusedArray[rowd][cold] = 2