gpt4 book ai didi

python - 使用代码在numpy数组中查找两个值之间的差

转载 作者:行者123 更新时间:2023-12-02 17:31:07 25 4
gpt4 key购买 nike

我有一个由(my_array = []且形状为(0,))初始化的numpy列表,然后将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元素hm元素
[[270.01 303.43] [310.17 306.37]]#倒数第二行
[[269.82 303.38] [310.99 306.86]]#最后一行
返回数组的形状为(2,2)且为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:标量变量的索引无效而无法使用。

我要做的就是查找wm元素中两列的最后一行与倒数第二行之间的差异(因此,在上面的示例中,该行的值为269.82-270.1 = -0.19和303.38-303.43 = -0.05)。其他问题中提出的所有解决方案均无效([0] [-1],[-1] [0],您可以自己尝试找出答案)索引无效。那么有没有办法解决这个问题呢?请充分解释一下,因为我对此还是有点陌生​​!提前致谢!

加成:
取最后两个数据块
索引数组(在空闲状态)获取(我复制了数组的最后两个块):
[[293.51373 323.4329 ]
[247.77493 316.02783]]
[[292.9887  322.23425]
[247.24142 314.2921 ]]

在我的程序中,它显示为(同一数组)
--wm元素------------------ hm元素 [[293.51373 323.4329 ][247.77493 316.02783]]我认为这是倒数第二行 [[292.9887 322.23425][247.24142 314.2921 ]],我以为这是最后一行

这给我带来了很多困惑,但是直到现在,我仍然忽略了它们显示方式的细微差别。现在,问题是如何为323.4329和293.51373数字建立索引,如果可以分别为它们建立索引会更好?

最佳答案

一个示例r:

In [41]: r = np.array([[0,0,8,10],[1,1,6,8],[2,2,10,12]])                            
In [42]: r
Out[42]:
array([[ 0, 0, 8, 10],
[ 1, 1, 6, 8],
[ 2, 2, 10, 12]])

In [43]: my_array=[]
In [45]: for (ex,ey,ew,eh) in r:
...: wm = int(ex+(ew/2))
...: hm = int(ey+(eh/2))
...: print(wm,hm)
...: my_array.append([wm,hm])
...:
4 5
4 5
7 8

结果数组:
In [46]: arr = np.array(my_array)                                                    
In [47]: arr
Out[47]:
array([[4, 5],
[4, 5],
[7, 8]])

样本索引:
In [48]: arr[:,0]                                                                    
Out[48]: array([4, 4, 7]) # the 3 wm values
In [49]: arr[-1,:] # the last values produced by the last `r` row
Out[49]: array([7, 8])

或更符号化的数组:
In [52]: arr = np.array([[f'wm{i}',f'hm{i}'] for i in range(3)])                     
In [53]: arr
Out[53]:
array([['wm0', 'hm0'],
['wm1', 'hm1'],
['wm2', 'hm2']], dtype='<U3')
In [54]: arr[:,0]
Out[54]: array(['wm0', 'wm1', 'wm2'], dtype='<U3')
In [55]: arr[-1,:]
Out[55]: array(['wm2', 'hm2'], dtype='<U3')

===
In [108]: arr = np.array([[313.5536, 330.60587], [368.23245, 332.70932]])            
In [109]: arr
Out[109]:
array([[313.5536 , 330.60587], # 2nd to the last row
[368.23245, 332.70932]]) # last row

最后一行:
In [110]: arr[-1]                                                                         
Out[110]: array([368.23245, 332.70932])
In [111]: arr[-1,:]
Out[111]: array([368.23245, 332.70932])

第一栏
In [112]: arr[:,0]                                                                   
Out[112]: array([313.5536 , 368.23245])

第二到最后一行:
In [113]: arr[-2,:]                                                                  
Out[113]: array([313.5536 , 330.60587])

关于python - 使用代码在numpy数组中查找两个值之间的差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55671921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com