You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免np.where将数值0转换为字符串'0'?

解决方案:创建包含数值和字符串的object类型numpy数组

要让np.where直接生成包含数值0和字符串'hello'的object类型数组,避免自动类型转换,有两种更高效的方法:

方法1:预先初始化object类型数组后赋值

先创建一个与原数组形状一致的object类型空数组,再根据条件分别赋值:

import numpy as np

A = np.array([[1,2,1],[2,1,2],[1,1,2]])
# 初始化同形状的object类型数组
result = np.empty(A.shape, dtype=object)
# 按条件填充值
result[A == 1] = 0
result[A != 1] = 'hello'

输出结果:

array([[0, 'hello', 0],
       ['hello', 0, 'hello'],
       [0, 0, 'hello']], dtype=object)

方法2:强制让np.where的返回值为object类型

将数值0包装为object类型,让np.where推断出输出类型为object:

import numpy as np

A = np.array([[1,2,1],[2,1,2],[1,1,2]])
x = np.where(A==1, np.array(0, dtype=object), 'hello')

此方法直接通过np.where生成目标数组,无需后续修改。

原理说明

np.where会自动根据两个分支的返回值类型统一输出类型:当传入原生int和str时,numpy会将数值转换为字符串以兼容;但如果其中一个分支是object类型的数值,numpy就会保留object类型,从而同时支持数值和字符串的存储。

内容的提问来源于stack exchange,提问作者Lilly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:50:33