我想检查NumPyArray中是否有一个集合中的值,如果是这样,则设置该数组中的区域= 1.如果没有设置keepRaster = 2.
numpyArray = #some imported array
repeatSet= ([3, 5, 6, 8])
confusedRaster = numpyArray[numpy.where(numpyArray in repeatSet)]= 1
Run Code Online (Sandbox Code Playgroud)
产量:
<type 'exceptions.TypeError'>: unhashable type: 'numpy.ndarray'
Run Code Online (Sandbox Code Playgroud)
有没有办法循环它?
for numpyArray
if numpyArray in repeatSet
confusedRaster = 1
else
keepRaster = 2
Run Code Online (Sandbox Code Playgroud)
澄清并要求进一步帮助:
我想要得到的,现在正在做的是将光栅输入放入数组中.我需要读取二维数组中的值,并根据这些值创建另一个数组.如果数组值在一个集合中,那么该值将为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
Run Code Online (Sandbox Code Playgroud)