大数据知识体系
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
  • JVM

    • JVM 架构
    • JVM 类加载机制
    • JVM 运行时数据区
    • JVM 垃圾回收机制
    • JVM 性能监控与调优
    • JVM 常见错误
  • Java

    • Java基础

      • Java 基础知识
      • Java 基础 - 枚举类
      • Java 基础 - 异常处理
      • Java 基础 - 泛型
      • Java 基础 - 反射
      • Java 基础 - 代理模式
      • Java 基础 - 注解
    • Java集合

    • Java并发编程

    • Java 开发规范
  • Scala

    • Scala 概述
  • Python

    • Numpy

      • 初识 Numpy
      • ndarray 的创建方式
      • NumPy 的数据类型
        • 概念
        • 示例
      • NumPy 数组计算
      • 拷贝
      • 索引和切片
      • 数学和统计方法
      • 数组形状变换
      • 通用函数
      • 排序
      • 搜索和计数
      • 线性代数
      • 伪随机数生成
      • 广播
      • 文件输入和输出
    • Pandas

      • 初识 Pandas
      • 认识 Series 和 DataFrame
      • Series 和 DataFrame 增删改查
      • Index对象增删改查
      • 普通列和行Index相互转化
      • 快速查看整体信息
      • 数值运算
      • 合并数据集
      • 数值统计与聚合
      • 分组聚合
      • 分类类型
      • 排序和排名
      • 时间序列
      • 文件输入与输出
      • 缺失值处理
      • 字符串处理
      • pandas sql
      • 其它
  • 语言基础
  • Python
  • Numpy
Will
2022-08-04
目录

NumPy 的数据类型

# 概念

  • ndarray 对象的 dtype 属性中描述了该对象的数据类型信息,返回一个 dtype 对象
  • 调用 astype()会创建一个新对象,不会改变原对象
  • 所有的数据类型如下表所示:
数据类型类型代码说明
int8、uint8i1、u1有符号和无符号的8位(1个字节)整形
int16、uint16i2、u2有符号和无符号的16位(2个字节)整形
int32、uint32i4、u4有符号和无符号的32位(4个字节)整形
int64、uint64i8、u8有符号和无符号的64位(8个字节)整形
float16f2半精度浮点数
float32f4或f标准的单精度浮点数
float64f8或d标准的双精度浮点数
float128f16或g扩展精度浮点数
bool?存储布尔类型(存储为一个字节)
objectOPython对象类型
string_S固定长度的字符串类型(每个字符1个字节)
unicode_U固定长度的unicode类型(字节数由平台决定)
complex64、complex128、complex256c8、c16、c32分别用两个32位、64位或128位浮点数表示的复数

注意:int_为int32的简写,float_为float64的简写,complex_为complex128的简写

# 示例

import numpy as np

int_arr = np.arange(6).reshape(2, 3)
int_arr
1
2
3
4
array([[0, 1, 2],
       [3, 4, 5]])

可以通过 dtype 属性获得类型信息

int_arr.dtype
1
dtype('int64')

创建指定 numpy 类型的标量

var_float16 = np.float16([12, 121])
var_float16
1
2
array([ 12., 121.], dtype=float16)
var_float16.dtype
1
dtype('float16')

可以通过 astype()方法转换数据类型

float_arr = int_arr.astype(np.float32) # 'f'等效于np.float32
float_arr
1
2
array([[0., 1., 2.],
       [3., 4., 5.]], dtype=float32)
# 如果将浮点数转换成整数,小数部分会被直接删除
float_arr2 = np.array([1.2, 2.6, 3.5, 4.9, 5.0])
float_arr2
1
2
3
array([1.2, 2.6, 3.5, 4.9, 5. ])
float_arr2.astype('int')
1
array([1, 2, 3, 4, 5])
# 字符串也可以转为数字类型
str_arr = np.array(['2.001', '1.25', '88', '-236.123', '00'], dtype=np.string_)
str_arr
1
2
3
array([b'2.001', b'1.25', b'88', b'-236.123', b'00'], dtype='|S8')
str_arr.astype('float')
1
array([   2.001,    1.25 ,   88.   , -236.123,    0.   ])

调用 dtype 的 mro 方法即可查看其所有的父类

np.int32.mro()
1
[numpy.int32,
 numpy.signedinteger,
 numpy.integer,
 numpy.number,
 numpy.generic,
 object]

可以使用 issubdtype()判断类型

np.issubdtype(float_arr.dtype, np.floating)
1
True
np.issubdtype(np.int32, np.floating)
1
False

自定义类型

my_dtype = np.dtype([('name',  'S10'), ('age',  int), ('city', 'S10')]) # 按关键字排序
my_dtype
1
2
dtype([('name', 'S10'), ('age', '<i8'), ('city', 'S10')])
temp_arr = [('zhangsan', 20, 'BJ'), ('lisi', 22, 'CD'), ('wangwu', 21, 'SH')]
my_arr = np.array(temp_arr, dtype=my_dtype)
my_arr
1
2
3
array([(b'zhangsan', 20, b'BJ'), (b'lisi', 22, b'CD'),
       (b'wangwu', 21, b'SH')],
      dtype=[('name', 'S10'), ('age', '<i8'), ('city', 'S10')])
my_arr[1]
1
(b'lisi', 22, b'CD')
my_arr['name']
1
array([b'zhangsan', b'lisi', b'wangwu'], dtype='|S10')
上次更新: 2023/11/01, 03:11:44

← ndarray 的创建方式 NumPy 数组计算→

Theme by Vdoing | Copyright © 2022-2023 Will 蜀ICP备2022002285号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式