您好我想在python中转换两段matlab代码。
我尝试做:
~isnan(matr(:,2)) into not(isnan(matr[:,1]))
但它会返回此错误:
not(isnan(matr[:,1]))
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
,第二个是:
[a,b] = min(d);
我尝试做:
a,b = d.min(0)
但它会返回此错误:
a,b = d.min(0)
ValueError: need more than 1 value to unpack
非常感谢您的支持
答案 0 :(得分:0)
对于问题1,您没有使用正确的索引语法:
>>> from numpy import *
>>> c = ( (1,2) , (3, 4))
>>> x = isnan(c[:][1])
>>> x[0]
False
>>> x[1]
False
对于问题2:
>>> d = [[1,2],[3,4]]
>>> a,b=min(d)
>>> a
1
>>> b
2
答案 1 :(得分:0)
1有几个问题。首先,not
不是一个函数,它是一个运算符,所以你不会not(foo)
,你会not foo
。 not(foo)
有效,但这是因为它正在使用(...)
进行分组,在您的情况下,它不会执行任何操作。
更大的问题是,not
,and
和or
等运营商是短路运营(他们在首次故障后停止运营),这不起作用正确使用numpy数组。您需要使用按位运算符~
,例如~isnan(matr[:,1])
对于第二个问题,我认为你试图将MATLAB等效于获得最小值和最小值的索引?在numpy中,这些是两个不同的操作,分别是min
和argmin
。 Python不支持基于其输出参数更改函数的行为(至少不以任何简单的方式)。