如何解决如何用NAN值替换每列中的不同值?
如果有人知道更好的方法来进行以下操作,请告诉我。 我正在尝试替换numpy数组中的某些值。 每列中的替换条件均不同。 假设我有一个numpy数组和nodata值列表,例如:
import numpy as np
array = np.array([[ 1,2,3],[ 4,5,6],[ 7,8,9],[10,11,12]])
nodata_values = [4,3]
我想拥有的是一个数组,其值被替换为
array([[ 1.,2.,nan],[nan,5.,6.],[ 7.,nan,9.],[10.,11.,12.]])
我知道我可以做到:
np.array([np.where(i == nodata_values[idx],np.nan,i)
for idx,i in enumerate(array.T)]).T
但是此代码在内部使用for循环,因此将其应用于具有上万行的表将花费时间。
解决方法
使用np.isin
创建布尔索引和广播。
astype
避免使用ValueError: cannot convert float NaN to integer
import numpy as np
array = array.astype(np.float)
array[np.isin(array,nodata_values)] = np.NaN
[[ 1. 2. nan]
[nan 5. 6.]
[ 7. nan 9.]
[10. 11. 12.]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。