我有一个我一直在努力解决的问题。我有一个numpy数组,该数组在末尾附加了值(在下面进行了演示):
array = []
for (x, y, w, h) in e:
wm = int(x + float(w / 2))
hm = int(y + float(h / 2))
array.append([numpy.float32(wm),numpy.float32(wh)])
return numpy.array(array)
#and it gives
[200.90489, 100.39489] #the second last
[288.0594, 30.0950] #last
#and so on..
我想索引array[0][-2] - array[0][-1]
,所以我可以找到第一列中倒数第二个元素(200.90489
)和第一列中倒数第二个元素({{ 1}})。
我可以为该列编制索引,但由于该列是一维数组,因此无法为该行编制索引,我尝试了多种方法将其转换为2d格式,但是它不起作用。我尝试过288.0594
和numpy.resize
,但都没有帮助。
我将如何处理?
预先感谢!
答案 0 :(得分:0)
一些评论:
array
是numpy的按键,您可能不应该将其用作变量名。可以,但是不是最佳实践。
return
用于函数结尾处的返回值,您不能将其放在for
循环中(另外,即使在函数中,循环也将在以下位置中断第一个return
)
看来您的结果将是一个2D数组,array[i][j]
应该可以工作。但是我认为您交换了i
和j
。
不确定为什么要转换为numpy.array,它已经可以用于列表了。
很多显然不必要的类型转换:float
=> int
=> numpy.float32
。我下面假设您想要一个四舍五入的整数。
因此,如果我猜对了你想做什么,那应该可以:
my_array = []
for (x, y, w, h) in e:
wm = int(x + w/2.)
hm = int(y + h/2.)
my_array.append([wm, wh])
if len(my_array) >= 2:
last_wm_diff = my_array[-1][0]-my_array[-2][0]
last_hm_diff = my_array[-1][1]-my_array[-2][1]
# It will work the same if you convert to a numpy array:
my_array = numpy.array(my_array)
if my_array.shape[0] >= 2:
last_wm_diff = my_array[-1][0]-my_array[-2][0]
last_hm_diff = my_array[-1][1]-my_array[-2][1]
答案 1 :(得分:0)
确保数组的形状为(1,2)
然后尝试:
np.append(array,[numpy.float32(wm),numpy.float32(wh)], axis=0)