首页 > 解决方案 > Python - 用索引/值替换年份

问题描述

我有个问题。我有一个结构化的 numpy 数组,其年份数如下:

array_start([(2020),
(2020),
(2021),
(2021),
dtype=[('year', '<i8')])

在这个例子中,2020 年是最早的一年,但这可能会改变,所以我不能真正使用硬编码或使用字典的这一年。我想用这样的计数/索引替换年份列:

array_desired_1([(1),
(1),
(2),
(2),
dtype=[('year', '<i8')])

或者:

array_desired_2([(1, 2020),
(1, 2020),
(2, 2021),
(2, 2021),
dtype=[('year', '<i8'), ('index', '<i8')])

到目前为止,我唯一得到的就是找到一种方法来获得最早的年份:

earlies_year_mask = array_start['year'] == np.amin(array_start['year'])

但我不认为我在正确的轨道上……有人可以帮助我吗?这应该很容易,但我无法得到正确的答案..

标签: pythonnumpyindexing

解决方案


啊,我找到了答案!:

year_count = 1

for year in np.unique(array_start['year']):
    array_start['year'][array_start['year'] == year] = year_count
    year_count = year_count + 1

任何没有循环或更有效的答案仍然非常受欢迎:)


推荐阅读