ray*_*ica 60
根据numpy文档:http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html,numpy.void类型被定义为灵活的数据类型.基本上,这些是数据类型,其中没有与您正在查看的变量关联的预定义类型.如果你看一下numpy,你有数据类型,例如float,uint8,bool,string,等.
void是为了适应更通用和灵活的类型,适用于那些不必属于这些预定义数据类型的数据类型.当您struct在每个元素具有与多个字段关联的多个数据类型的位置加载时,通常会遇到这种情况.每个结构单元可以有不同的数据类型的组合,所有这些数据类型的合并表示这种结构元素的一个实例,从而导致我们numpy.void.
使用文档,您当然可以像处理任何其他数据类型一样执行相同的操作.看看在generic这里数据类型的方法:http://docs.scipy.org/doc/numpy/reference/generated/numpy.generic.html#numpy.generic.实际上,所有numpy数据类型都是从这个泛型类派生的,包括numpy.void.
在本文开头提供的第一个链接中,它显示了如何创建自定义记录类型的一个很好的示例,其中记录是数字元组和字符串的组合.创建这些记录的列表时,列表中的每个类型都是类型numpy.void,它表明记录属于此数据类型.然而,牢记这个记录表都有一个数据类型,它是此纪录的,但这个列表中的每个元素将是类型numpy.void.
但是,作为自我控制的问题,让我们在这里重新创建示例:让我们创建一个自定义记录类型,其中有两个字段与您创建的每个变量相关联:
namegrades因此,你会做类似的事情:
import numpy as np
dt = np.dtype([('name', np.str_, 16), ('grades', np.float64, (2,))])
Run Code Online (Sandbox Code Playgroud)
因此,让我们创建一个包含两个元素的示例列表并实例化它们的字段:
x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)
Run Code Online (Sandbox Code Playgroud)
因为我们把这个列表变成了a numpy.array,所以我们期望它的数据类型是这样的:
type(x)
Run Code Online (Sandbox Code Playgroud)
我们得到:
<type 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)
请记住,列表本身是一个numpy.array,但不是单个元素.
要访问此列表的第二个元素,即第二个记录,我们执行以下操作:
x[1]
Run Code Online (Sandbox Code Playgroud)
我们得到:
('John', [6.0, 7.0])
Run Code Online (Sandbox Code Playgroud)
要检查第二条记录的类型,我们会:
type(x[1])
Run Code Online (Sandbox Code Playgroud)
我们得到:
<type 'numpy.void'> # As expected
Run Code Online (Sandbox Code Playgroud)
要访问第二条记录的名称,我们会:
x[1]['name']
Run Code Online (Sandbox Code Playgroud)
我们得到:
'John'
Run Code Online (Sandbox Code Playgroud)
要访问第二条记录的等级,我们会:
x[1]['grades']
Run Code Online (Sandbox Code Playgroud)
我们得到:
array([ 6., 7.])
Run Code Online (Sandbox Code Playgroud)
要检查第二条记录中的名称类型,我们会:
type(x[1]['name'])
Run Code Online (Sandbox Code Playgroud)
我们得到:
<type 'numpy.string_'>
Run Code Online (Sandbox Code Playgroud)
要检查第二条记录中的成绩类型,我们会:
type(x[1]['grades'])
Run Code Online (Sandbox Code Playgroud)
我们得到:
<type 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)
请注意,此列表中的每个元素都是类型numpy.void.但是,列表中每个元素的各个字段都是数字元组或字符串.所述收集这些元素一起是式的numpy.void.
| 归档时间: |
|
| 查看次数: |
23342 次 |
| 最近记录: |