Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python检查数组的数据类型-浮点或复数_Python_Arrays_Numpy_Types - Fatal编程技术网

Python检查数组的数据类型-浮点或复数

Python检查数组的数据类型-浮点或复数,python,arrays,numpy,types,Python,Arrays,Numpy,Types,如果是浮点或复杂数据类型,如何检查numpy数组?对于简单的示例,以下检查所有工作正常 # these are True a = np.zeros(10) a.dtype == float a.dtype == np.float a.dtype == np.float64 b = np.zeros(10,dtype=complex) b.dtype == complex b.dtype == np.complex b.dtype == np.complex128 但是,我有一个dtypedt

如果是浮点或复杂数据类型,如何检查numpy数组?对于简单的示例,以下检查所有工作正常

# these are True
a = np.zeros(10)
a.dtype == float
a.dtype == np.float
a.dtype == np.float64

b = np.zeros(10,dtype=complex)
b.dtype == complex
b.dtype == np.complex
b.dtype == np.complex128

但是,我有一个dtype
dtype('>f8')
数组。前面的比较都没有将其标识为浮点数组。就我所知,endianness(>vs.可以使用
all()
函数和
isinstance()
函数组合使用

如果列表中的所有元素都为True,则函数返回True,您可以使用
isinstance()
检查numpy数组中的每个数字是否为浮点。由于
isinstance()
将'>f8'视为浮点,因此比较不会引发您遇到的问题

下面是它的外观:

b = np.zeros(10,dtype='>f8')
all(isinstance(x, float) for x in b)

输出:

True

您可以将
all()
函数与
isinstance()
函数结合使用

如果列表中的所有元素都为True,则函数返回True,您可以使用
isinstance()
检查numpy数组中的每个数字是否为浮点。由于
isinstance()
将'>f8'视为浮点,因此比较不会引发您遇到的问题

下面是它的外观:

b = np.zeros(10,dtype='>f8')
all(isinstance(x, float) for x in b)

输出:

True

您是否尝试过
numpy.isrealobj()
np.iscomplexobj()

你的例子:

import numpy as np

a = np.zeros(10)
print(np.isrealobj(a)) # -> True
print(np.iscomplexobj(a)) # -> False

b = np.zeros(10,dtype=complex)
print(np.isrealobj(b)) # -> False
print(np.iscomplexobj(b)) # -> True

c=np.zeros(10, dtype='>f8')
print(np.isrealobj(c)) # -> True
print(np.iscomplexobj(c)) # -> False
np.isrealobj(x)
的文档说明:

如果x是非复数类型或复数数组,则返回True

检查的是输入的类型,而不是值 如果虚部等于零,
isrealobj
计算结果为False 如果数据类型复杂

还可以通过值进行检查:
np.isreal
np.iscomplex


这有用吗?

您是否尝试过
numpy.isrealobj()
np.iscomplexobj()

你的例子:

import numpy as np

a = np.zeros(10)
print(np.isrealobj(a)) # -> True
print(np.iscomplexobj(a)) # -> False

b = np.zeros(10,dtype=complex)
print(np.isrealobj(b)) # -> False
print(np.iscomplexobj(b)) # -> True

c=np.zeros(10, dtype='>f8')
print(np.isrealobj(c)) # -> True
print(np.iscomplexobj(c)) # -> False
np.isrealobj(x)
的文档说明:

如果x是非复数类型或复数数组,则返回True

检查的是输入的类型,而不是值 如果虚部等于零,
isrealobj
计算结果为False 如果数据类型复杂

还可以通过值进行检查:
np.isreal
np.iscomplex


这有帮助吗?

也许你应该解释一下为什么程序不应该测试
类型(b[0])==float
或类似的东西。+1。是否也有空数组的解决方案,即
np.array([])
?只是出于好奇……使用
np.isrealobj()
也适用于空数组:
np.isrealobj(np.array([]))
为True,而
np.isrealobj(np.array([],dtype=complex))
为False。@bproxauf all(b)在为True时返回True如果b为空,则仅使用all函数无法解决此问题。但您可以添加类似于so
all(b)和len(b)的条件!=0
要获得适当的结果,您应该解释为什么程序不应该测试
类型(b[0])==float
或类似的东西。+1。是否也有空数组的解决方案,即
np.array([])
?出于好奇…使用
np.isrealobj()
也适用于空数组:
np.isrealobj(np.array([])
为真,
np.isrealobj(np.array([],dtype=complex))
为假。@bproxauf all(b)在b为空时返回真,如果b为空,则仅使用all函数无法解决此问题。但您可以添加类似于这样的条件
all(b)和len(b)= 0 得到适当的结果肯定有帮助,即使是空数组,谢谢你的建议。如果你对我的答案完全满意,请考虑接受它。谢谢!绝对帮助,即使是空数组,谢谢你的建议。如果你对我的答案完全满意,请考虑接受它。谢谢!<代码> NP.ISCOmplexobj
测试
dtype
type
issubclass(arr.dtype.type,np.complexfloating)
。基本数据类型有几个级别的子类化,因此简单的“=”测试并不总是有效。
np.iscomplexobj
测试
dtype
类型
issubclass>(arr.dtype.type,np.complexfloating)
。基本数据类型有几个级别的子类,因此简单的“==”测试并不总是有效。