python - 如何根据表值替换数组中的值?
问题描述
我有以下脚本和示例数据:
import numpy as np
from tabulate import tabulate
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
table = [['cat','value'],[1,0.5],[2,0.5],[3,0.5],[4,0.5],[6,0.05],[7,0.025],[8,0.005],[9,0.123]]
print(tabulate(table))
输出:
cat value
1 0.5
2 0.5
3 0.5
4 0.5
6 0.05
7 0.025
8 0.005
9 0.123
数组 ( a
) 包含类别。
如何用"value"
表中列中的数据替换数组中的类别?
例如,数组中的所有 1 都将替换为 0.5 等。
在此示例中,我创建了一个表。但我也有一个单独的 csv 文件,其中包含我创建的表中的数据。
我将在 1200 x 1200 阵列上应用它。
解决方案
您可以创建一个映射字典,然后将此映射应用于您的列表。例如:
mapping = dict(table[1:])
out = [[mapping.get(v, v) for v in l] for l in a]
print(out)
印刷:
[[0.5, 0.5, 0.5], [0.5, 5, 0.05], [0.025, 0.005, 0.123]]
推荐阅读
- python - 游戏“乒乓”我的代码有问题
- javascript - 根据下拉选择检索数据
- sql - 基于另一个表的可选 Where 子句
- apache-spark - Pyspark 按条件分组和计数数据
- docker - ModuleNotFoundError:没有使用 Docker 的名为“psycopg2”的模块
- moodle - 创建自定义品牌moodle应用程序的过程是什么?
- f# - 如何在 F# 中同时等待取消令牌和 EventWaitHandle?
- php - 命令在第一个 php 打开标记的正下方和多个文件中插入一行代码
- sql - 签入 oracle 以订购
- symfony - 如何提高 SwiftMailer DKIM Signer 的性能?