将本机python类型转换为numpy数据类型

2024-10-06 13:00:49 发布

您现在位置:Python中文网/ 问答频道 /正文

不要将其与反向任务混淆,这已经涵盖了很多内容。 我正在寻找类似np.dtype(7.7) == np.float的东西。 其动机是能够像numpy本身一样处理任何类似数组的输入。为了构造输出或临时数据,如果可能的话,我有时希望使用输入类型

编辑:也许这是一个糟糕(太具体)的例子;我知道np.float恰好是内置float的别名。我在想以下几点

myInput = something
# required to have a homogeneous data type in the documentation of my function;
# maybe constrained to float, int, string, lists of same length and type
# but I would like to handle simply as much of that as numpy can handle
numInput = len(myInput)
numOutput = numInput // 2 # just for example
myOutput = np.empty(shape=(numOutput), dtype=???)
for i in range(numOutput):
  myOutput[i] = whatever # maybe just a copy, hence the same data type

Tags: ofthetoinnumpydatatypenp
2条回答

您可以简单地使用np.float64(原始\u float)或任何您希望将变量转换为的numpy类型

为了记录在案,此代码适用于:

    val = 7.7
    if isinstance(val, float) is True:
        val = np.float64(val)
        if isinstance(val, np.float64) is True:
            print("Success!")

>>>Success!

希望这有帮助

编辑: 我刚刚看到@用户2357112支持Monica对您的问题的评论,需要注意的是,np.float的作用方式与float相同。我提供的实现面向特殊的numpy类型,如我在测试代码中使用的np.float32或np.float64。但如果我只使用np.float执行相同的测试,结果将是:

    val = 7.7
    if isinstance(val, float) is True:
       if isinstance(val, np.float) is True:
          print("Success!")
>>>Success!

由此证明,从解释器的角度来看,float和np.float几乎是相同的类型

numpy.float只是常规的Pythonfloat类型。这不是一个简单的数据类型。这几乎肯定不是你需要的:

>>> import numpy
>>> numpy.float is float
True

如果希望dtype NumPy将标量强制为,只需创建一个数组并获取其dtype:

>>> numpy.array(7.7).dtype
dtype('float64')

如果希望NumPy用于此数据类型的标量,请访问该数据类型的type属性:

>>> numpy.array(7.7).dtype.type
<class 'numpy.float64'>

相关问题 更多 >