python - 逐元素 bool 乘法

标签 python numpy

我正在寻找增加这些类型列表的最漂亮和最短的方法:

a = [True, False, True, False, False]

b = [100, 200]

b 的长度等于 a 中 True 元素的数量

我需要的答案是[100, 0, 200, 0, 0] here

有什么简单的方法可以得到这个答案吗?
它看起来像逐元素乘法,但事实是第二个列表的大小更小,因此如果没有错误代码,常见的 numpy 方法将无法工作。

希望,你会找到好的解决方案

最佳答案

您可以在 numpy 中执行此操作:

c = np.array(a).astype(int)

c[c==1] = b

>>> c
array([100,   0, 200,   0,   0])

注意 如果您需要结果作为列表(基于您想要的输出),而不是 numpy 数组,请使用 c.tolist()

关于python - 逐元素 bool 乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757511/

相关文章:

python - 方法中的单个字符串或字符串列表

从字符串前面去除所有 0 的 Pythonic 方法

sorting - NumPy:对 3D 数组进行排序,但将第二维分配给第一个

python - NumPy:矩阵点积与 MATLAB 不兼容

python - 如果向量相同,计算两个向量之间的角度的方法会引发错误?

python - 使用 pydicom 添加新的 DICOM 标签

python - 通过添加另一列来对我的 pandas 数据框中的重复项进行排序

python - 如何让 pydoc 命令在 Windows 中工作?

python - 为什么我在尝试转换 np.array(some_list) ValueError : could not broadcast input array 时出错

python - dtype如何影响Numpy中的行列运算速度?