2013-01-08 180 views
3

我有一个(3,3)numpy的阵列,并想找出元素,其绝对 值最大的符号:提取numpy的阵列切片结果

X = [[-2.1, 2, 3], 
    [ 1, -6.1, 5], 
    [ 0, 1, 1]] 

s = numpy.argmax(numpy.abs(X),axis=0) 

给我我需要的元素的索引,s = [ 0,1,1]

如何使用这个数组来提取元素[ -2.1, -6.1, 5]来找出它们的符号?

回答

6

试试这个:

# You might need to do this to get X as an ndarray (for example if X is a list) 
X = numpy.asarray(X) 

# Then you can simply do 
X[s, [0, 1, 2]] 

# Or more generally 
X_argmax = X[s, numpy.arange(X.shape[1])] 
+0

谢谢,这工作! – arun

0

部分答案:使用signsignbit

In [8]: x = numpy.array([-2.1, -6.1, 5]) 

In [9]: numpy.sign(x) 
Out[9]: array([-1., -1., 1.]) 

In [10]: numpy.signbit(x) 
Out[10]: array([ True, True, False], dtype=bool) 
+0

我对提取实际元素更感兴趣 - 毕里科的回答。我知道我可以在结果上使用numpy.sign。谢谢。 – arun