我array下面有一个喜欢
array
np.array(["hello","world",{"a":5,"b":6,"c":8},"usa","india",{"d":9,"e":10,"f":11}])
和pandas DataFrame下面的像
pandas
DataFrame
df = pd.DataFrame({'A': ["hello","world",{"a":5,"b":6,"c":8},"usa","india",{"d":9,"e":10,"f":11}]})
当我申请np.isreal到DataFrame
np.isreal
df.applymap(np.isreal) Out[811]: A 0 False 1 False 2 True 3 False 4 False 5 True
当我np.isreal为numpy数组做的时候。
numpy
np.isreal( np.array(["hello","world",{"a":5,"b":6,"c":8},"usa","india",{"d":9,"e":10,"f":11}])) Out[813]: array([ True, True, True, True, True, True], dtype=bool)
我必须np.isreal在错误的用例中使用,但是您能帮助我 为什么结果不同 吗?
部分答案是isreal仅打算像第一个参数那样用于数组。
isreal
您想isrealobj在每个元素上使用以获取您在此处看到的行为:
isrealobj
In [11]: a = np.array(["hello","world",{"a":5,"b":6,"c":8},"usa","india",{"d":9,"e":10,"f":11}]) In [12]: a Out[12]: array(['hello', 'world', {'a': 5, 'b': 6, 'c': 8}, 'usa', 'india', {'d': 9, 'e': 10, 'f': 11}], dtype=object) In [13]: [np.isrealobj(aa) for aa in a] Out[13]: [True, True, True, True, True, True] In [14]: np.isreal(a) Out[14]: array([ True, True, True, True, True, True], dtype=bool)
的确留下了问题,如何处理np.isreal非数组式的东西,例如
In [21]: np.isrealobj("") Out[21]: True In [22]: np.isreal("") Out[22]: False In [23]: np.isrealobj({}) Out[23]: True In [24]: np.isreal({}) Out[24]: True
原来,这源于.imag因为该测试isreal确实是:
.imag
return imag(x) == 0 # note imag == np.imag
就是这样。
In [31]: np.imag(a) Out[31]: array([0, 0, 0, 0, 0, 0], dtype=object) In [32]: np.imag("") Out[32]: array('', dtype='<U1') In [33]: np.imag({}) Out[33]: array(0, dtype=object)
这将.imag在数组上查找属性。
In [34]: np.asanyarray("").imag Out[34]: array('', dtype='<U1') In [35]: np.asanyarray({}).imag Out[35]: array(0, dtype=object)
我不确定为什么尚未在字符串大小写中设置…