【发布时间】:2015-03-11 15:51:20
【问题描述】:
我正在尝试对 numpy 数组进行一些基本分类... 我想将 2d 数组与 3d 数组沿第 3 维进行比较,并根据相应的 z 轴值进行分类。
所以给定 3 个数组,它们堆叠成一个 3d 数组:
import numpy as np
a1 = np.array([[1,1,1],[1,1,1],[1,1,1]])
a2 = np.array([[3,3,3],[3,3,3],[3,3,3]])
a3 = np.array([[5,5,5],[5,5,5],[5,5,5]])
a3d = dstack((a1,a2,a3))
还有另一个二维数组
a2d = np.array([[1,2,4],[5,5,2],[2,3,3]])
我希望能够将 a2d 与 a3d 进行比较,并返回最接近 a3d 级别的二维数组。 (或者我想任何自定义函数都可以比较沿 z 轴的每个值,并根据该比较返回一个值。)
编辑
我修改了我的数组以更紧密地匹配我的数据。 a1 是最小值,a2 是平均值,a3 是最大值。所以我想输出每个a2d值是否更接近a1(分类为“1”)a2(分类为“2”)或a3(分类为“3”)。我正在做一个 3d 数组,因为在真实数据中,它不是一个简单的 3 数组选择,但出于 SO 目的,它有助于保持简单。我们可以假设,在平局的情况下,我们会选择较低的,所以 2 将被归类为“1”级,4 被归类为“2”级。
【问题讨论】:
-
当您将 a2d 与 a3d 进行比较时,您如何定义“最接近”?对于给定的函数 f(a2d, a23d),您期望返回是多少?
-
@perrygeo - 在一个特定情况下,我将拥有多年的 NDVI 数据。我将运行累积的最小、最大和平均栅格,它们代表一个像素级度量。我需要能够将任何单个 NDVI 与这些累积指标进行比较,并将每个像素分类为更接近最小值、最大值或平均值。因此,与三个指标中的每一个的数字接近度,最接近的一个定义了分类。在死分的情况下,我可能会选择平均值,但这种情况很少见,所以不会真的扭曲结果。
标签: python numpy multidimensional-array scipy