- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 创建和操作数组
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 遍历数组
- NumPy - 重塑数组
- NumPy - 连接数组
- NumPy - 堆叠数组
- NumPy - 分割数组
- NumPy - 展平数组
- NumPy - 转置数组
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步长
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组的轴
- NumPy - 字节交换
- NumPy - 副本和视图
- NumPy - 元素级数组比较
- NumPy - 过滤数组
- NumPy - 连接数组
- NumPy - 排序、搜索和计数函数
- NumPy - 搜索数组
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高级操作
- NumPy - 排序数组
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 将值追加到数组
- NumPy - 交换数组的列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 估算缺失数据
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位数
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 创建日期时间数组
NumPy 中的日期时间数组
日期时间数组是保存日期和时间值的数组。NumPy 提供了datetime64 和timedelta64 数据类型,用于处理具有广泛精度的日期和时间。
"datetime64" 类型表示日期和时间,而 "timedelta64" 表示日期或时间之间的差异。
创建日期时间数组
在 NumPy 中,我们可以使用 array() 函数和 datetime64() 函数创建日期时间数组 -
使用 np.array() 函数
您可以通过使用 numpy.array() 函数指定日期字符串或时间戳来创建日期时间数组。您需要将dtype 指定为datetime64 以确保数组元素被视为日期时间对象。
以下是语法 -
numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
其中,
- object: 这是您要转换为 NumPy 数组的输入数据(例如,列表、元组或其他类似数组的对象)。
- dtype: 指定数组元素所需的的数据类型。如果未提供,NumPy 将从输入数据推断数据类型。
- copy: 如果为 True,则该函数将创建输入数据的副本。如果为 False,则仅在必要时创建副本。
- order: 指定内存布局顺序。'C' 表示行优先(C 样式)顺序,'F' 表示列优先(Fortran 样式)顺序,'A' 或 'K' 可用于自动选择顺序。
- subok: 如果为 True,则传递 ndarray 的子类;如果为 False,则返回的数组将强制为基类 ndarray。
- ndmin: 指定结果数组应具有的最小维度数。如有必要,将在形状的左侧添加新的轴。
示例
在以下示例中,我们通过将 "dtype" 参数传递给 array() 函数,将日期字符串列表转换为 NumPy 数组 -
import numpy as np # Creating a datetime array using date strings dates = np.array(['2024-08-01', '2024-08-15', '2024-09-01'], dtype='datetime64') print("Datetime Array:\n", dates)
以下是获得的输出 -
Datetime Array: ['2024-08-01' '2024-08-15' '2024-09-01']
使用 np.datetime64() 函数
NumPy 中的 datetime64() 函数用于创建日期和时间的数组。此函数提供了一种处理日期和时间数据的方法,支持对时间序列数据进行操作。"datetime64" 数据类型允许日期和时间精度达到“纳秒”级别。
以下是语法 -
numpy.datetime64(datetime_string, unit)
其中,
- datetime_string: 它是一个表示日期和/或时间的字符串。此字符串的格式必须与指定的单位匹配。
- unit (可选): 它指定时间单位(例如,Y、M、D、h、m、s、ms、us、ns)。单位定义日期和时间表示的精度。
示例
在这里,我们创建单独的日期时间对象并检索从指定日期创建的 "datetime64" 对象数组 -
import numpy as np # Creating individual datetime objects date1 = np.datetime64('2024-08-01') date2 = np.datetime64('2024-08-15') # Creating an array of datetime objects dates = np.array([date1, date2, np.datetime64('2024-09-01')]) print("Datetime Array:\n", dates)
这将产生以下结果 -
Datetime Array: ['2024-08-01' '2024-08-15' '2024-09-01']
创建具有特定频率的日期时间数组
在 NumPy 中创建具有特定频率的日期时间数组允许您生成遵循规则间隔的日期或时间序列,例如每日、每月、每小时等。
在 NumPy 中,您可以使用np.arange() 或np.linspace() 函数结合datetime64 数据类型来创建具有特定频率的日期时间数组。这些函数允许您在开始日期或时间和结束日期或时间之间生成均匀间隔的日期时间值。
使用 np.arange() 函数
np.arange() 函数用于创建具有指定频率的日期时间数组。关键参数包括开始日期或时间、结束日期或时间以及连续日期时间值之间的步长(频率)。以下是语法 -
numpy.arange(start, stop, step, dtype='datetime64')
其中,
- start: 它是以 datetime64 格式表示的开始日期或时间。
- stop: 它是以 datetime64 格式表示的结束日期或时间(不包括)。
- step: 它是由 timedelta64 指定的连续日期/时间之间的频率或间隔。
- dtype: 它就是数据类型,应该是 'datetime64'。
示例
在下面的示例中,我们正在创建一个从“2024 年 8 月 1 日”到“2024 年 8 月 10 日”的日期数组,频率为每天 -
import numpy as np # Creating a daily datetime array dates = np.arange('2024-08-01', '2024-08-11', dtype='datetime64[D]') print("Daily Datetime Array:", dates)
以下是上述代码的输出 -
Daily Datetime Array: ['2024-08-01' '2024-08-02' '2024-08-03' '2024-08-04' '2024-08-05' '2024-08-06' '2024-08-07' '2024-08-08' '2024-08-09' '2024-08-10']
使用 np.linspace() 函数
虽然 np.arange() 函数通常用于创建具有特定频率的日期时间数组,但当您想要指定两个日期时间值之间点的数量而不是间隔时,也可以使用 np.linspace() 函数。以下是语法 -
numpy.linspace(start, stop, num, dtype='datetime64')
其中,
- start: 它是以 "datetime64" 格式表示的开始日期时间值。
- stop: 它是以 "datetime64" 格式表示的结束日期时间值。
- num: 它是在 start 和 stop 之间生成的日期时间值的数目。
- dtype: 它就是数据类型,应该是 'datetime64'。
示例
在此示例中,我们正在创建一个日期时间数组,该数组在开始日期和结束日期之间具有 5 个均匀间隔的日期时间值 -
import numpy as np # Convert start and end dates to datetime64 start_date = np.datetime64('2024-08-01') end_date = np.datetime64('2024-08-10') # Calculate the difference in days between start and end date_range = np.arange(start_date, end_date + np.timedelta64(1, 'D')) # Use linspace on the integer values of dates datetimes = np.linspace(0, len(date_range)-1, num=5, dtype=int) # Map back to the original date range datetime_array = start_date + datetimes.astype('timedelta64[D]') print("Datetime Array with 5 Points:", datetime_array)
获得的输出如下所示 -
Datetime Array with 5 Points: ['2024-08-01' '2024-08-03' '2024-08-05' '2024-08-07' '2024-08-10']
创建时间数组
在 NumPy 中创建时间数组包括生成与时间相关的值的序列,例如小时、分钟或秒,类似于创建日期数组的方式。
在 NumPy 中,您可以使用datetime64 和timedelta64 数据类型创建时间数组。虽然 "datetime64" 用于时间中的绝对点(例如特定日期和时间),但 "timedelta64" 表示持续时间(例如小时或分钟)。通过组合这些类型,您可以创建表示特定时刻或间隔的时间值数组。
示例
以下示例生成一个从午夜开始到中午结束的时间数组,每个元素表示一个特定的小时 -
import numpy as np # Define the start and end times start_time = np.datetime64('2024-08-01T00:00') end_time = np.datetime64('2024-08-01T12:00') # Create an array of hourly intervals time_array = np.arange(start_time, end_time, np.timedelta64(1, 'h')) print("Time Array:", time_array)
执行上述代码后,我们将获得以下输出 -
Time Array: ['2024-08-01T00:00' '2024-08-01T01:00' '2024-08-01T02:00' '2024-08-01T03:00' '2024-08-01T04:00' '2024-08-01T05:00' '2024-08-01T06:00' '2024-08-01T07:00' '2024-08-01T08:00' '2024-08-01T09:00' '2024-08-01T10:00' '2024-08-01T11:00']
组合日期和时间
组合日期和时间包括创建包含日期和一天中特定时间的 "datetime64" 对象。
您可以通过在单个字符串中指定日期和时间,或使用 NumPy 的矢量化运算组合单独的日期和时间数组来创建 datetime64 数组。
示例
在此示例中,我们创建一个数组,其中每个元素表示特定日期和时间 -
import numpy as np # Creating datetime arrays with date and time datetimes = np.array([np.datetime64('2024-08-01T08:00:00'), np.datetime64('2024-08-02T12:30:00'), np.datetime64('2024-08-03T16:45:00')]) print("Datetime Array with Date and Time:\n", datetimes)
产生的结果如下 -
Datetime Array with Date and Time: ['2024-08-01T08:00:00' '2024-08-02T12:30:00' '2024-08-03T16:45:00']