python - 查找numpy数组中两个值之间的差异
问题描述
我有一个 numpy 列表,由 (my_array=[] 启动,形状为 (0,)) 然后我将 wm 和 hm 元素附加到它上面,就像这样(r 是一个级联,格式为-[[300 240 22 22]]):
my_array=[]
for (x, y, w, h) in r:
wm=int(x+ (w/2.))
hm=int(y+ (h/2.))
my_array.append([numpy.float32(wm), numpy.float32(hm)])
return numpy.array(my_array)
该代码产生:
wm element the hm element
[[270.01 303.43] [310.17 306.37]] # second to last row
[[269.82 303.38] [310.99 306.86]] # the last row
the shape of the returned array is (2,2) and is dtype:float32
...
现在的问题是,当我尝试附加 303.43 时,理论上它会是 [-2][1] 但它索引 303.38。这很好,但我还需要索引 303.43。
我发现第一个 [] 索引 wm[0] 或 hm[1] 元素,然后第二个 [] 索引每个元素内的两列值之一
- 例如 [0][-1] 索引wm 元素 [0] 和最后一行 [-1] 我也想索引倒数第二行并尝试了 [0][-2] 但它没有按预期工作(它索引了 269.82)。
所以我尝试了 [0][1][-2] 但由于 IndexError: invalid index to scalar variable 它没有工作。
我要做的就是找到 wm 元素中 2 列的最后一行和倒数第二行之间的差异(因此在上面的示例中,它将是 269.82-270.1=-0.19 和 303.38-303.43=-0.05)。索引不起作用。那么有没有办法解决这个问题?
解决方案
我无法复制您的数组,但鉴于您的(非常复杂的)问题,我相信以下内容最终会满足您的要求:
这应该给你269.82-270.1=-0.19
my_array[0][-2]-my_array[0][0]
这应该给你303.38-303.43=-0.05
my_array[0][-1]-my_array[0][1]
一般来说,我相信你索引你的数组my_array
如下:
wm element the hm element
[[my_array[0][0] my_array[0][1]] [my_array[1][0] my_array[1][1]]] # second to last row
[[my_array[0][-2] my_array[0][-1]] [my_array[1][-2] my_array[1][-1]]] # the last row
在您的特定情况下,倒数第二个元素也是第三个元素,因此您可以将它们索引为my_array[0][2]
而不是my_array[0][-2]
和my_array[1][2]
而不是my_array[1][-2]
推荐阅读
- python - 有没有办法在数据帧上向后滚动 Pandas Grouper?
- android - 使用 Xamarin.Android 访问 SMS 消息
- wordpress - word press 循环滑块
- node.js - 使用 create-react-app (Docker) 的 npm run build 设置限制性能 CPU
- regex - 如何从文本文件中去除 ANSI 转义码?
- validation - 验证振荡,尝试了不同的方法但没有好的结果
- python - 如何在 Django 中从后端删除令牌
- vue.js - Vue.js 访问父变量
- c# - 在当前上下文中从 DataItemTemplate 访问 ASPxComboBox
- node.js - 猫鼬中的错误。ValidatorError:需要路径“产品”