0
Numpy int数组无法存储缺失值。int数组缺失值numpy
>>> import numpy as np
>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> myArray = np.arange(10)
>>> myArray.dtype
dtype('int32')
>>> myArray[0] = None
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
>>> myArray.astype(dtype = 'float')
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
>>> myFloatArray = myArray.astype(dtype = 'float')
>>> myFloatArray[0] = None
>>> myFloatArray
array([ nan, 1., 2., 3., 4., 5., 6., 7., 8., 9.])
熊猫警告有关此内容的文档 - Caveats and Gotchas, Support for int NA。 Wes McKinney也重申了这一点stack question
我需要能够将缺失值存储在int数组中。我将行插入到我设置的数据库中,只接受不同大小的整数。
我目前的工作是将数组存储为一个对象,该对象可以将int和None类型作为元素存储。
>>> myArray.astype(dtype = 'object')
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=object)
>>> myObjectArray = myArray.astype(dtype = 'object')
>>> myObjectArray[0] = None
>>> myObjectArray
array([None, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=object)
这对于大型数据集似乎是内存密集型和缓慢的。我想知道是否有人有更好的解决方案,而numpy的开发正在进行中。
'numpy.ma.MaskedArray'呢? – MSeifert
有趣。你知道它是否适用于熊猫? – Nirvan
这可能有点哈克。你不能指定一个指定的整数来填补这些缺失的值吗?您可以保留这样一个整数来仅填充缺失的值。为什么你只想插入'None'来代替缺失值? – kmario23