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

Python中如何将ndarray里的1替换为对应字母a、b等?

解决方法

假设你用的是NumPy数组,这里提供两种实用的处理方式:

方式一:保留原数组结构,将1替换为对应字母,0位置留空

import numpy as np

# 定义原数组
arr = np.array([
    [0, 0, 1],
    [1, 0, 1],
    [0, 1, 1],
    [0, 0, 0]
])

# 列对应的字母:索引0对应第一列(a),索引1对应第二列(b),索引2对应第三列(c)
col_letters = np.array(['a', 'b', 'c'])

# 创建结果数组,初始化为空字符串
result = np.full(arr.shape, '', dtype='U1')

# 遍历每一列,替换对应位置的1为字母
for col_idx in range(arr.shape[1]):
    # 找到当前列中值为1的位置,替换为对应字母,其余保持空
    result[:, col_idx] = np.where(arr[:, col_idx] == 1, col_letters[col_idx], result[:, col_idx])

print(result)

运行后输出:

[['' '' 'c']
 ['a' '' 'c']
 ['' 'b' 'c']
 ['' '' '']]

方式二:每行合并所有对应字母,生成字符串数组

如果需要把每行中所有对应字母拼接成一个字符串(比如第二行的1在第一和第三列,就拼成ac),可以用以下代码:

import numpy as np

arr = np.array([
    [0, 0, 1],
    [1, 0, 1],
    [0, 1, 1],
    [0, 0, 0]
])

col_letters = np.array(['a', 'b', 'c'])

# 按行处理,筛选出值为1的列对应的字母并拼接
row_results = np.apply_along_axis(lambda row: ''.join(col_letters[row == 1]), axis=1, arr=arr)

print(row_results)

运行后输出:

['c' 'ac' 'bc' '']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:42:48