使用2索引从数组中提取最小值[关闭]
Posted
技术标签:
【中文标题】使用2索引从数组中提取最小值[关闭]【英文标题】:extract minimum value from array using 2 index [closed] 【发布时间】:2016-10-10 01:55:55 【问题描述】:我有一个表格,其中 x 和 y 分别代表行的头部和列的头部。使用两个索引 (x1,y1) 我必须在表中输入并选择 z 中报告的最小值。为了更清楚,用 x1 我将识别 i 和 i+1 行,用 y1 识别 j 和 j+1 列,这意味着 z 中的四个值,我只需要提取它们之间的最小值。
这是桌子:
x = np.array([100., 200., 300., 400., 500., 600.])
y = np.array([20., 300., 450., 500., 550.])
z = np.array([[1., 1., 1., 1., 1.02, 1.05],
[1., 1., 1., 1., 1.01, 1.05],
[1., 1., 1., 1., 1.01, 1.04],
[1., 1., 1., 1.01, 1.07, 1.18],
[1., 1., 1., 1.01, 1.09, 1.23]])
为
x1, y1 = 550, 525
我想在z
中找到最小值。
例如,在这种情况下应该是1.07
。
感谢您的 cmets,特别是 Toby Speight 的指示,我以这种方式改进了代码:
x = np.array([100., 200., 300., 400., 500., 600.])
y = np.array([20., 300., 450., 500., 550.])
z = np.array([[1., 1., 1., 1., 1.02, 1.05],
[1., 1., 1., 1., 1.01, 1.05],
[1., 1., 1., 1., 1.01, 1.04],
[1., 1., 1., 1.01, 1.07, 1.18],
[1., 1., 1., 1.01, 1.09, 1.23]])
xmin, xmax = 100,600
ymin, ymax = 20, 550
x1, y1 = 600, 350
if x1 > xmax:
x1 = xmax
if x1 < xmin:
x1 = xmin
else:
x1 = x1
if y1 > ymax:
y1 = ymax
if y1 < ymin:
y1 = ymin
else:
y1 = y1
xi = max([0]+[i for i in range(len(x)) if x1 >= x[i]])
yi = max([0]+[i for i in range(len(y)) if y1 >= y[i]])
z1 = z[yi, xi]
print z1
当然它并不优雅(我不是专家!),但它在所有情况下都运行良好,除了 x1, y1 = 600, 350 预期结果应该是z1 = z[yi, xi] = 1.04
。
希望这次我更清楚了!
如果你能帮助我,我将不胜感激! 非常感谢你们!
【问题讨论】:
不清楚你在问什么。为什么 1.07 是 z 的最小值? x,y 和 x1,y1 之间的关系是什么?它们与 z 的最小值有什么关系? 请添加一些相关代码? 我认为,如果您添加更多上下文并连接缺失的部分,可能会出现一些答案或提示。好奇你已经尝试过什么。 对不起,如果我不清楚。实际上,我有一个表格,其中 x 和 y 分别代表行的头部和列的头部。使用两个索引 (x1,y1) 我必须在表中输入并选择 z 中报告的最小值。为了更清楚,我将使用 x1 识别 i 和 i+1 行,使用 y1 识别 j 和 j+1 列,这意味着对于 z 中的值,我只需要提取它们之间的最小值。 请edit你的问题添加这个解释;谢谢。 【参考方案1】:xindex = max([0]+[i for i in range(len(x)) if x1 >= x[i]])
yindex = max([0]+[i for i in range(len(y)) if y1 >= y[i]])
print z[yindex][xindex]
【讨论】:
虽然此代码可能会回答问题,但提供有关 why 和/或 如何 回答问题的额外上下文将显着改善其长期价值。请edit你的答案添加一些解释。【参考方案2】:col = np.searchsorted(x, x1)
row = np.searchsorted(y, y1)
result = z[row - 1, col - 1]
请注意,您仍有一些工作要做来处理边缘情况,例如当x1
小于x
中的第一个值时。
【讨论】:
以上是关于使用2索引从数组中提取最小值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章