2

我正在使用 matplotlib cvs2rec 函数读取人口普查数据 - 工作正常给了我一个不错的 ndarray。

但是有几列,其中所有值都是 dtype |04 的“无”。当我进入 Atpy“TypeError:NoneType 的对象没有 len()”时,这会引起问题。像 '9999' 或其他缺失对我有用。在这种情况下,掩码不起作用,因为我将真实数组传递给 ATPY,它不会转换掩码。numpy 中的 Put 函数不适用于无值,这是更改值的最佳方法(我认为)。我认为某种布尔数组是可行的方法,但我无法让它工作。

那么将无值和/或未初始化的numpy数组更改为'9999'或其他重新编码之类的好/快速方法是什么。没有掩蔽。

谢谢,

马修

4

2 回答 2

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 数组才能使其正常工作

于 2011-08-12T04:01:56.673 回答
0

计算时可以使用掩码数组。并且当将数组传递给 ATPY 时,您可以调用掩码数组的填充(9999)方法将掩码数组转换为普通数组,并将无效值替换为 9999。

于 2011-08-12T21:35:17.820 回答