我有一个数组:
MDP= [[0.705,.655,0.614,0.388],[0.762,None,0.660,-1],[0.812,.868,0.918,+1]]
如何在上面的数组上应用np.around而不会得到None和-1,+1值的错误?
TIA-
确保使用numpy数组,而不是列表列表:
np.around(np.array(MDP).astype(float))
#array([[ 1., 1., 1., 0.],
# [ 1., nan, 1., -1.],
# [ 1., 1., 1., 1.]])
如果需要,可以使用.tolist()
将结果转换回嵌套列表。
我的解决方案是在数组内的值为NoneType
时进行异常处理。这可以通过lambda
函数非常优雅地完成。
如果你的阵列是1D:
flex_round = lambda array: [None if x == None else np.round(x) for x in array]
如果你的阵列是2D:
flex_round = lambda array: [[None if x == None else np.round(x) for x in y] for y in array]
不要忘记将decimals
参数添加到np.roud
调用中,以精确计算逗号后应保留的位数。