一、数据类型
数据类型,即dytpe,是一个特殊的对象,它包含了ndarray需要为某一种类型数据所申明的内存块信息。
二、numpy中的数据类型
三、一些示例
引入numpy
import numpy as np
– 将整数类型转换为浮点数类型
定义一个整数类型数组
arr1= np.array([1,2,3,4,5,6])
print("-------------------")
print(arr1)
print(arr1.dtype)
转换为浮点数类型
arr2= arr1.astype(np.float64) # 将整数类型换为浮点数类型
print("-------------------")
print(arr2)
print(arr2.dtype)
结果
-------------------
[1 2 3 4 5 6]
int32
-------------------
[1. 2. 3. 4. 5. 6.]
float64
-
将浮点数类型转换为整数类型
定义一个浮点数类型数组
arr3= np.random.rand(3,4)
print("-------------------")
print(arr3)
print(arr3.dtype)
将浮点数类型转换为整数类型
arr4= arr3.astype(np.int8) # 将浮点数类型转换为整数类型
print("-------------------")
print(arr4)
print(arr4.dtype)
结果
-------------------
[[0.73711088 0.01004312 0.03919142 0.08882122]
[0.83891361 0.13986113 0.31991484 0.72618698]
[0.9857005 0.65272144 0.92928238 0.84318804]]
float64
-------------------
[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
int8
-
将字符串类型数据转换为浮点数类型
定义一个字符串类型的数组
arr5=np.array(["0.15","1","5.6","5.56"])
print("-------------------")
print(arr5)
print(arr5.dtype)
将字符串类型数据转换为浮点数类型
arr6=arr5.astype(np.float32) # 将字符串类型数据转换为浮点数类型
print("-------------------")
print(arr6)
print(arr6.dtype)
结果
-------------------
['0.15' '1' '5.6' '5.56']
<U4
-------------------
[0.15 1. 5.6 5.56]
float32
-
使用另一个数组的数据类型定义另一个数组的数据类型
定义一个整数类型的数组
arr7=np.random.random_integers(10,size=(5,6))
print("0-------------------0")
print(arr7)
print(arr7.dtype)
定义一个浮点数类型的数组,并将整数类型的数组进行转换
arr8=np.array(np.array([2.0,3.5,6.7,8.9]),dtype=np.float64)
arr7=arr7.astype(arr8.dtype) # 使用另一个数组的数据类型定义另一个数组的数据类型
print("1-------------------1")
print(arr7)
print(arr7.dtype)
结果
0-------------------0
[[10 7 9 7 9 8]
[ 4 10 10 9 6 5]
[ 9 3 10 1 5 6]
[ 2 3 9 1 10 1]
[ 3 7 5 4 1 5]]
int32
1-------------------1
[[10. 7. 9. 7. 9. 8.]
[ 4. 10. 10. 9. 6. 5.]
[ 9. 3. 10. 1. 5. 6.]
[ 2. 3. 9. 1. 10. 1.]
[ 3. 7. 5. 4. 1. 5.]]
float64
-
使用类型代号来传入数据类型
注意:使用astype时总是生成一个新的数组,即使你传入的dtype与之前一样
arr9= np.empty(8,dtype="u4") # 使用类型代号来传入数据类型
print("-------------------")
print(arr9)
print(arr9.dtype)
结果
-------------------
[5374032 5046351 5505104 5046367 4456527 4587593 4522057 3997778]
uint32
版权声明:本文为qq_43709590原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。