我正在使用matplotlib cvs2rec函数阅读人口普查数据 - 工作正常给我一个很好的ndarray。
但是有几个列的所有值都是'“none”“与dtype | 04。当我导入Atpy时,这是一个问题”TypeError:NoneType的对象没有len()“。像'9999'这样的东西或者其他遗漏对我有用。在这种情况下,掩码不会起作用,因为我将真实数组传递给ATPY并且它不会转换为MASK。在numpy中的Put函数将无法使用任何值,这是最好的方法更改值(我认为)。我认为某种布尔数组是要走的路,但我无法让它工作。
那么将无值和/或未初始化的numpy数组更改为类似'9999'或其他重新编码的好/快方式是什么?没有掩饰。
谢谢,
马修
答案 0 :(得分:3)
以下是此问题的解决方案,但如果您的数据是记录数组,则只应将此操作应用于列,而不是整个数组:
import numpy as np
# initialise some data with None in it
a = np.array([1, 2, 3, None])
a = np.where(a == np.array(None), 9999, a)
请注意,您需要将None
转换为numpy数组才能使其正常工作
答案 1 :(得分:0)
进行计算时可以使用mask数组。当将数组传递给ATPY时,可以调用mask数组的fill(9999)方法将掩码数组转换为普通数组,并将无效值替换为9999。