标题说明了一切。
假设我有一个包含总和为1的值的numpy数组。
[0.5 0.3 0.1 0.05 0.03 0.01]
我想删除小于0.05的数组的所有值 并同时删除相应的列,这将导致一个数组 像这样:
[0.5 0.3 0.1 0.05]
当然有办法实现这一目标。但我对代码我不满意 到目前为止生产。我觉得必须有一种优雅的方式来实现这一目标 蟒。
帮助
修改
感谢您的帮助。我觉得我已经走上正轨了。我只是没有 知道如何使用语法。不过不明白下来的选票。 :(
答案 0 :(得分:2)
a = [0.5 0.3 0.1 0.05 0.03 0.01]
print a[a >= .05]
答案 1 :(得分:2)
听起来你有一个2D数组(根据短语判断,“并同时删除相应的列”)。
如果您创建一个布尔数组,idx
对于您希望保留的列为True,那么您可以使用arr[:, idx]
选择这些列:
import numpy as np
np.set_printoptions(formatter={'float': '{:0.2f}'.format})
np.random.seed(1)
arr = np.random.random((3,4))
mask = (arr < 0.05)
idx = mask.any(axis=0)
result = arr[:, ~idx]
print(arr)
# [[0.42 0.72 0.00 0.30]
# [0.15 0.09 0.19 0.35]
# [0.40 0.54 0.42 0.69]]
print(result)
# [[0.42 0.72 0.30]
# [0.15 0.09 0.35]
# [0.40 0.54 0.69]]
答案 2 :(得分:1)
numpy.delete
是你的朋友
import numpy as np
a = np.array([0.5 , 0.3 , 0.1 , 0.05, 0.03, 0.01])
a = np.delete(a,np.where(a < 0.05))
np.delete(a, 1)
将创建a
的副本,然后从副本中删除a[1]
。
a
仍未受影响。
要强制更改a
,请执行此操作
我们做a = np.delete(a,np.where(a < 0.05))
同样np.delete
也适用于高维数组。
对于高维数据,您必须在选择正确的np.where