【问题标题】:How to get type of multidimensional Numpy array elements in Python如何在 Python 中获取多维 Numpy 数组元素的类型
【发布时间】:2014-04-18 08:28:06
【问题描述】:

如何获取多维数组的类型?

我处理数组,但考虑到数据类型:stringfloatBoolean,我必须调整代码,因此无论维度可以是一维或更多维,我都必须获取类型。

数据可以是实数的 1d,字符串的 3D ...

我想恢复数组的类型,它是一个真实的,它是一个字符串,它是一个布尔... 不做 Array[0] 或 Array [0][0][0][0] 因为维度可以是不同的。 或者一种获取数组第一个元素的方法,无论尺寸如何。

它适用于 np.isreal 有点修改,但我没有找到类似 isastring 或 isabolean ...

【问题讨论】:

    标签: python arrays numpy types


    【解决方案1】:

    使用dtype 属性:

    >>> import numpy
    >>> ar = numpy.array(range(10))
    >>> ar.dtype
    dtype('int32')
    

    说明

    Python 列表就像数组:

    >>> [[1, 2], [3, 4]]
    [[1, 2], [3, 4]]
    

    但对于分析和科学计算,我们通常使用 numpy 包的数组进行高性能计算:

    >>> import numpy as np
    >>> np.array([[1, 2], [3, 4]])
    array([[1, 2],
           [3, 4]])
    

    如果您要检查数组中数据的类型,我们可以通过使用数组中感兴趣的项目的索引来做到这一点(这里我依次深入,直到到达最深的元素):

    >>> ar = np.array([[1, 2], [3, 4]])
    >>> type(ar)
    <type 'numpy.ndarray'>
    >>> type(ar[0])
    <type 'numpy.ndarray'>
    >>> type(ar[0][0])
    <type 'numpy.int32'>
    

    我们也可以通过访问dtype属性直接检查数据类型

    >>> ar.dtype
    dtype('int32')
    

    如果数组是一个字符串,例如,我们学习最长的字符串有多长:

    >>> ar = numpy.array([['apple', 'b'],['c', 'd']])
    >>> ar
    array([['apple', 'b'],
           ['c', 'd']], 
          dtype='|S5')
    >>> ar = numpy.array([['apple', 'banana'],['c', 'd']])
    >>> ar
    array([['apple', 'banana'],
           ['c', 'd']], 
          dtype='|S6')
    >>> ar.dtype
    dtype('S6')
    

    我倾向于不对我的导入使用别名,因此我具有此处所见的一致性,(我通常使用import numpy)。

    >>> ar.dtype.type
    <type 'numpy.string_'>
    >>> ar.dtype.type == numpy.string_
    True
    

    但是import numpy as np是通用的(也就是给它起别名):

    >>> import numpy as np
    >>> ar.dtype.type == np.string_
    True
    

    【讨论】:

      【解决方案2】:
      fruits = [['banana'], [1],  [11.12]]
      
      for first_array in range(len(fruits)):
          for second_array in range(len(fruits[first_array])):
              print('Type :', type(fruits[first_array][second_array]), 'data:', fruits[first_array][second_array])
      

      表示每个值的数据类型。

      【讨论】:

        猜你喜欢
        • 2021-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-26
        • 1970-01-01
        • 2019-11-17
        • 1970-01-01
        相关资源
        最近更新 更多