我有一个关于numpy diff的奇怪行为案例:
a = list(img_arr[y_coord_1,:])
print a
print np.diff(a)
>>[62, 62, 62, 62, 62, 62, 62, 62, 63, 62, 96, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 66, 63, 64, 64, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 65, 65, 64, 63, 63, 63, 63, 63, 63, 63, 64, 64, 63, 63, 63, 63, 63, 64, 65, 65, 64, 63, 63, 63, 63]
>>[ 0 0 0 0 0 0 0 1 255 34 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 224 253 1 0 255
0 0 0 0 0 0 0 0 0 1 1 0 255 255 0 0 0 0
0 0 1 0 255 0 0 0 0 1 1 0 255 255 0 0 0]
现在,当我在终端上运行时,我得到了正确的答案。
array([ 0, 0, 0, 0, 0, 0, 0, 1, -1, 34, 2, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, -3, 1,
0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
0, -1, -1, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0,
0, 0, 0, 1, 1, 0, -1, -1, 0, 0, 0])
可能会引起这种情况的是什么 - 我在此脚本中使用了几个其他编译库,如果相关的话
编辑:我刚刚发现错误是负数 - 上限非常可疑。看起来像是dtype问题...
a.dtype
是什么?它是不是np.uint8
? - ali_mnp.uint8
数组上调用list()
只会给你一个np.uint8
标量值的列表。你需要显式地将数组转换为有符号整数类型。 - ali_m.astype()
是NumPy数组的一个方法,用于将数组中的元素转换为指定数据类型。 - jedwards