我有一个numpy数组,它是通过读取图像获得的。你知道吗
data=band.ReadAsArray(0,0,rows,cols)
现在的问题是,在使用循环操作数据时,大约需要13分钟。如何减少这一时间。还有别的解决办法吗。你知道吗
样本代码
for i in range(rows):
for j in range(cols):
if data[i][j]>1 and data[i][j]<30:
data[i][j]=255
elif data[i][j]<1:
data[i][j]=0
else:
data[i][j]=1
时间太长了。任何简短的方法
您可以使用布尔数组来指定要更改的值,而不是循环。例如,如果我们有一个数组
我们可以用你的逻辑
这是因为numpy索引是如何工作的:
注意:我们并不需要
anew
您可以对a
本身进行操作,但是您必须注意应用程序的顺序,以防您的条件和目标值重叠。你知道吗注意#2:你的条件意味着如果数组中有一个元素正好是30或更大的值,它将变成1,而不是255。这似乎有点奇怪,但这是你的代码所做的,所以我复制了它。你知道吗
使用
numpy
可以使用掩码来选择具有特定条件的所有元素,如下面的代码示例所示:如果您希望重新编写代码,那么可以是:
相关问题 更多 >
编程相关推荐