【发布时间】:2021-12-11 22:37:14
【问题描述】:
我有一个相对较大的 NumPy 数组 (1212,1612),其中包含对应于 RGB 图像的唯一段的 OBJECTID 值。此外,我有一个 107305 行的不同 Pandas 数据框,其中包含所有 OBJECTID 值及其对应的植被类型类,这些类是由随机森林分类产生的。我想(迭代地)用与该特定 OBJECTID 值对应的植被类型类替换 NumPy 数组中的 OBJECTID 值。
NumPy 数组('array')如下所示:
[1,1,1,1,2,2,2,2,3,3,...
1,1,1,1,1,2,2,2,3,3,...
1,1,2,4,4,4,2,2,3,3,...] # values 1-4 correspond to OBJECTID
pandas 数据框('vegdata')的样子:
VEG_TYPE OBJECTID
Shrub (S) 1
Grass (G) 2
Moss (M) 3
Grass (G) 4
... ... ...
我希望数据最终的样子如下:
[S,S,S,S,G,G,G,G,M,M,...
S,S,S,S,S,G,G,G,M,M,...
S,S,G,G,G,G,G,G,M,M,...]
我目前正在做的是:
for row in vegdata.itertuples():
np.where(array[[array == row.OBJECTID]], row.VEG_TYPE,
array[[array == row.OBJECTID]])
这个代码 sn-p 工作,但它非常慢,在 vegdata 数据帧中每 1000 行大约需要 30 秒,而我有 107305 行,在某些图像中大约是 10 倍。我正在调查是否有另一种方法来执行这种分析,但与此同时我还没有找到合适的方法,所以我想知道是否有人可能知道如何以更快的方式进行这种分析.
我是 StackOverflow 的新手,所以我尝试通过提供一些代码 sn-ps 使我的答案尽可能清晰,但如果有任何不清楚的地方,请告诉我。提前非常感谢!
【问题讨论】:
-
这能回答你的问题吗newbedev.com/…
-
@sehan2 非常感谢您的回复!我正在研究它,但我发现很难将这个网站上的代码示例转换为我自己的数据并使其工作。如果它不会花费您太多的工作,您是否有可能使用我的数据名称转换其中一个示例?再次感谢您!
标签: python arrays numpy iteration classification