2017-10-09 47 views
1

我有一个numpy阵列,例如的值,零(按行)一个`numpy`数组的元素比是小于一个给定的矢量

import numpy as np  
A = np.exp(np.random.randn(3,10)) 

即数组

array([[ 1.17164655, 1.39153953, 0.68628548, 0.1051013 ], 
     [ 0.45604269, 2.21059251, 1.79624195, 0.37553947], 
     [ 1.03063907, 0.28035114, 1.70371105, 3.66090236]]) 

和我计算最大行的如下

np.max(A, axis=1) 
array([ 1.39153953, 2.21059251, 3.66090236]) 

欲零的A的元素,其值小于第是相应行的最大值的一小部分。例如,对于上面的例子,如果我们设置该级分至0.9,我想到零以下元素:

第一行:零是小于0.9 *最大的元素= 1.25238557

第二行:零是小于0.9 *最大的元素= 1.98953326

第三行:零是元素小于0.9 *最大= 3.29481212

我看了看numpy的文档,但我没有运气。我也试过

A < np.max(A, axis=1) 

我希望能够工作,但事实并非如此。

回答

3

使用keepdims参数保持,而不是删除折叠轴线的长度为1的轴,所以轴排队与原来的形状,用于广播:

A[A < 0.9*np.amax(A, axis=1, keepdims=True)] = 0 
相关问题