可复制代码:

x = np.array([0.9, 0.9, 1])
y = np.array([0, 0, 1])
y[x<1] = 1 - x[x<1]
print(y)

输出

array([0, 0, 1])

所需输出

array([0.1, 0.1, 1])

我知道np.where会得到我想要的输出.我只是好奇为什么布尔索引在这种情况下不起作用.

推荐答案

必须指定y的数据类型:

y = np.array([0, 0, 1], dtype=np.float64)

当您没有指定该值时,它将假定integer为dtype.因此,对该数组的每次修改都将转换为该数组的原始数据类型.

Python相关问答推荐

调查TensorFlow和PyTorch性能的差异

pandas MultiIndex是SQL复合索引的对应物吗?

这些变量是否相等,因为它们引用相同的实例,尽管它们看起来应该具有不同的值?

Flask:如何在完整路由代码执行之前返回验证

保留包含pandas pandras中文本的列

使用Python OpenCV的文本检测分割

查找下一个值=实际值加上使用极点的50%

如何根据日期和时间将状态更新为已过期或活动?

使用新的类型语法正确注释ParamSecdecorator (3.12)

比较2 PD.数组的令人惊讶的结果

Django mysql图标不适用于小 case

如何获得每个组的时间戳差异?

从spaCy的句子中提取日期

部分视图的DataFrame

Scrapy和Great Expectations(great_expectations)—不合作

Django RawSQL注释字段

考虑到同一天和前2天的前2个数值,如何估算电力时间序列数据中的缺失值?

处理具有多个独立头的CSV文件

将标签移动到matplotlib饼图中楔形块的开始处

为什么在FastAPI中创建与数据库的连接时需要使用生成器?