python - 在python中循环遍历真值数组并用另一个数组中的组件替换真值

标签 python arrays python-3.x numpy

假设我有一个类似于以下内容的 Numpy 真值数组:

truths = [True, False, False, False, True, True]

我还有另一个值数组,看起来像这样:

nums = [1, 2, 3]

我想创建一个循环,将 truths 数组中的所有真值替换为 nums 数组中的下一个数字,并将所有 False 值替换为 0。

我想以这样的方式结束:

array = [1, 0, 0, 0, 2, 3]

最佳答案

我会推荐 numpy.putmask() .因为我们是从 bool 类型转换而来的至 int64 ,我们需要先做一些转换。

首先,初始化:

truths = np.array([ True, False, False, False,  True,  True])
nums = np.array([1, 2, 3])

然后我们根据掩码进行转换和替换(如果 truth 的元素为 True):

truths = truths.astype('int64') # implicitly changes all the "False" values to 0
numpy.putmask(truths, truths, nums)

最终结果:

>>> truths
array([1, 0, 0, 0, 2, 3])

注意我们只是传入了truths进入 numpy.putmask() 的“掩码”参数.这将简单地检查数组 truths 的每个元素是否是真实的;因为我们将数组转换为类型 int64 ,它将根据需要仅替换非 0 的元素。

如果我们想要更迂腐,或者需要替换一些任意值,我们需要 numpy.putmask(truths, truths==<value we want to replace>, nums)反而。

如果我们想要更迂腐,而不是假设我们可以轻松地转换类型(就像我们可以从 boolint64 ),据我所知,我们要么需要对不同的 numpy.array 进行某种映射我们可以在哪里进行转换。我个人这样做的方式是转换我的 numpy.array转换成一些 bool 数组,我可以在其中进行这种简单的转换,但可能有更好的方法。

关于python - 在python中循环遍历真值数组并用另一个数组中的组件替换真值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56843898/

相关文章:

Python 3.7 : dataclass does not raise `TypeError` for `eq=False`

javascript - 显示掷骰子的次数

javascript - 数组中的 jQuery 随机项不起作用

javascript - Django 使用 Javascript 包含模板

Python3。如何在上下文管理器中正确引发异常以从 with 运算符中处理它?

python - 无法访问请求中 g 对象的属性集

python - Tensorflow 中的目标必须是一维 Top_k_categorical_accuracy

python - 无法接收用户的更新消息

php - 更新我的表 PHP/MySQL 时出现问题

python - Python 3 中未解析的属性引用