2013-04-29 72 views
0

,我发现了以下错误:过滤与itemgetter和numpy的阵列

Traceback (most recent call last): 
    File "calibrating.py", line 160, in <module> 
    intrinsic = calibrate2(corners, cb_points, (640,480)) 
    File "calibrating.py", line 100, in calibrate2 
    valid_corners = filter(itemgetter(0), image_corners) 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

image_corners是numpy的阵列,即一个列表,

[array([[ 261.45239258, 140.88212585], 
    [ 301.11242676, 156.306427 ], 
    [ 343.38937378, 168.20132446], 
    [ 382.79559326, 180.48405457],... 
    [ 392.16989136, 338.6171875 ], 
    [ 439.97772217, 337.2124939 ]], dtype=float32), ... ] 

我想要做的就是拿矩阵没有dtype=float32,我做错了什么?

+0

你能澄清你的意思是“取矩阵没有D型= FLOAT32”? – 2013-04-29 09:13:02

+0

什么是“有效角落”?除了[[0,0]'以外的任何一点吗? (你想用'filter'消除什么?) – unutbu 2013-04-29 09:21:24

+0

用“不带dtype = float32的矩阵”我的意思是我想取出numpy数组tupple的第二个元素,换句话说,得到一个“传统“阵列。 – XavierusWolf 2013-04-29 09:45:19

回答

1

dtype属性无法通过itemgetter访问。

试试这个过滤器来代替:

filter(lambda arr: arr.dtype != float32, image_corners) 

这会给你没有dtype==float32所有matricies。