如何获取Python中多维Numpy数组元素的类型
我怎么能获取一个多维数组的类型呢?
我在处理数组时,需要考虑数据的类型,比如:字符串
、浮点数
、布尔值
,所以我需要调整代码,以便不管数组的维度是几维(可能是一维、二维或更多),我都能获取到类型。
数据可以是一维的真实数,或者是三维的字符串……
我想知道数组的类型,它是一个真实数、一个字符串,还是一个布尔值……
而不想通过像 Array[0] 或 Array[0][0][0][0] 这样的方式来获取,因为维度可能会不同。或者有没有办法获取数组的第一个元素,无论它的维度是多少。
我用稍微修改过的 np.isreal 可以做到这一点,但我找不到类似 isastring 或 isaboolean 的等效方法……
2 个回答
0
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])
这段代码展示了每个值的数据类型。
27
使用 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