字节顺序是通过对数据类型预先设定
<
或
>
来决定的。
<
意味着小端法(最小值存储在最小的地址,即低位组放在最前面)。
>
意味着大端法(最重要的字节存储在最小的地址,即高位组放在最前面)。
dtype 对象是使用以下语法构造的:
numpy.dtype(object, align, copy)
object - 要转换为的数据类型对象
align - 如果为 true,填充字段使其类似 C 的结构体。
copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
接下来我们可以通过实例来理解。
import
numpy
as
np
dt
=
np
.
dtype
(
np
.
int32
)
print
(
dt
)
输出结果为:
int32
import
numpy
as
np
dt
=
np
.
dtype
(
'
i4
'
)
print
(
dt
)
输出结果为:
int32
import
numpy
as
np
dt
=
np
.
dtype
(
'
<i4
'
)
print
(
dt
)
输出结果为:
int32
下面实例展示结构化数据类型的使用,类型字段和对应的实际类型将被创建。
import
numpy
as
np
dt
=
np
.
dtype
(
[
(
'
age
'
,
np
.
int8
)
]
)
print
(
dt
)
输出结果为:
[('age', 'i1')]
import
numpy
as
np
dt
=
np
.
dtype
(
[
(
'
age
'
,
np
.
int8
)
]
)
a
=
np
.
array
(
[
(
10
,
)
,
(
20
,
)
,
(
30
,
)
]
,
dtype
=
dt
)
print
(
a
)
输出结果为:
[(10,) (20,) (30,)]
import
numpy
as
np
dt
=
np
.
dtype
(
[
(
'
age
'
,
np
.
int8
)
]
)
a
=
np
.
array
(
[
(
10
,
)
,
(
20
,
)
,
(
30
,
)
]
,
dtype
=
dt
)
print
(
a
[
'
age
'
]
)
输出结果为:
[10 20 30]
下面的示例定义一个结构化数据类型 student,包含字符串字段 name,整数字段 age,及浮点字段 marks,并将这个 dtype 应用到 ndarray 对象。
import
numpy
as
np
student
=
np
.
dtype
(
[
(
'
name
'
,
'
S20
'
)
,
(
'
age
'
,
'
i1
'
)
,
(
'
marks
'
,
'
f4
'
)
]
)
print
(
student
)
输出结果为:
[('name', 'S20'), ('age', 'i1'), ('marks', 'f4')]
import
numpy
as
np
student
=
np
.
dtype
(
[
(
'
name
'
,
'
S20
'
)
,
(
'
age
'
,
'
i1
'
)
,
(
'
marks
'
,
'
f4
'
)
]
)
a
=
np
.
array
(
[
(
'
abc
'
,
21
,
50
)
,
(
'
xyz
'
,
18
,
75
)
]
,
dtype
=
student
)
print
(
a
)
输出结果为:
[('abc', 21, 50.0), ('xyz', 18, 75.0)]
每个内建类型都有一个唯一定义它的字符代码,如下: