目标:以类似于具有“ select_dtypes”的熊猫的方式使用NumPy。
按如下所示设置数据框:
>>> df = pd.DataFrame({'a': [1, 2] * 3,
... 'b': [True, False] * 3,
... 'c': [1.0, 2.0] * 3})
>>> df
a b c
0 1 True 1.0
1 2 False 2.0
2 1 True 1.0
3 2 False 2.0
4 1 True 1.0
5 2 False 2.0
我正在使用NumPy寻找类似的东西
>>> df.select_dtypes(include=['float64'])
c
0 1.0
1 2.0
2 1.0
3 2.0
4 1.0
5 2.0
任何帮助将不胜感激。
答案 0 :(得分:3)
Numpy数组的元素都具有相同的基础类型。 这些实际上是C language数组(并且所有元素的数据类型都必须相同)。
您可以使用import numpy as np
a = np.array([1.5, 2, 3])
print(a.dtype)
属性对其进行检查,如下所示:
np.float64
即使两个元素作为int
插入,也会给您float
如果您要检查某个int
是否可能是np.isclose
(例如上例中的2和3),则不要这样做,因为浮点精度可能会成为问题
如果您真的坚持,则可以使用float
获取一个布尔数组,该布尔数组指示每个int
元素是否足够接近其底线# For example above, e.g. [1.5, 2, 3]
print(np.isclose(np.floor(a), a))
对应元素,并且这些元素可以可广播不会造成太大的精度损失:
[False, True, True]
将给您bool
,表示可以强制转换第二和第三元素。再次,我建议您不要这样做。
编辑:如果您将布尔值numpy数组强制转换为np.float,则无法将其取回,因为您无法区分强制转换为float
的{{1}}和将int
强制转换为float
,如果 int具有0
或1
值。