我有一個(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]
來找出它們的符號?
我有一個(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]
來找出它們的符號?
試試這個:
# 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])]
部分答案:使用sign
或signbit
。
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)
我對提取實際元素更感興趣 - 畢里科的回答。我知道我可以在結果上使用numpy.sign。謝謝。 – arun
謝謝,這工作! – arun