部分答案是
isreal仅打算像第一个参数那样用于数组。
您想
isrealobj在每个元素上使用以获取您在此处看到的行为:
In [11]: a = np.array(["hello","world",{"a":5,"b":6,"c":8},"usa","india",{"d":9,"e":10,"f":11}])In [12]: aOut[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]: TrueIn [22]: np.isreal("")Out[22]: FalseIn [23]: np.isrealobj({})Out[23]: TrueIn [24]: np.isreal({})Out[24]: True
原来,这源于
.imag因为该测试
isreal确实是:
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("").imagOut[34]:array('', dtype='<U1')In [35]: np.asanyarray({}).imagOut[35]: array(0, dtype=object)
我不确定为什么尚未在字符串大小写中设置…
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)