gpt4 book ai didi

python - numpy:替换 recarray 中的值

转载 作者:太空宇宙 更新时间:2023-11-03 15:26:20 25 4
gpt4 key购买 nike

我是 numpy 的新手,我正在尝试替换 recarray 中的值。所以我有这个数组:

import numpy as np
d = [('1', ''),('4', '5'),('7', '8')]
a = np.array(d, dtype=[('first', 'a5'), ('second', 'a5')])

我想做这样的事情:

ind = a=='' #Replace all blanks
a[ind] = '12345'

但这不能正常工作。我能够做到这一点:

col = a['second']
ind = col=='' #Replace all blanks
col[ind] = '54321'
a['second'] = col

这行得通,但我宁愿有一种方法可以在整个 recarray 中做到这一点。谁有更好的解决方案?

最佳答案

据我所知,numpy 的“逐个元素”操作(您可以在不循环的情况下一次对数组的所有元素执行某些功能)不适用于 recarrays。您只能对各个列执行此操作。

如果你想使用 recarrays,我认为最简单的解决方案是循环不同的列,虽然你想要另一个解决方案,但你可以像这样自动完成:

for fieldname in a.dtype.names:
ind = a[fieldname] == ''
a[fieldname][ind] = '54321'

但也许你应该考虑你是否真的需要 recarrays,而不能只使用普通的 ndarray。当然,如果您只有一种数据类型(如示例中所示),那么唯一的优势就是列名。

关于python - numpy:替换 recarray 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6258415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com