Python中的元素排列

2024-05-10

数组“data”的每个元素都必须更改如下:

例如, 4 应该可以在names_A 和data_A 中看到。 4 的名字_A 是“David”。 现在“David”应该出现在names_B 和data_B 中。 “David”的 data_B 是 30。 所以,元素4必须改变30;等等。

import numpy as np

names_A = ['David', 'Mark', 'Brian', 'Michael']
data_A = [4,3,1,2]

names_B = ['Mark', 'David', 'Michael', 'Brian']
data_B = [51,30,11,29]

data = np.array([[4,4,3,3,2,2,1,1,3,3],
                [4,3,3,3,2,2,3,1,3,1],
                [4,2,3,3,2,2,4,1,4,3]])

最简单、最简单的方法是怎样做的?

我尝试如下:

dats = data.ravel()

results = []
for d in dats:
    nam_A = names_A[data_A == int(d)]
    dat_B = data_B[names_B == nam_A]
    results.append(dat_B)

print np.array(results).reshape(data.shape)


[[51 51 51 51 51 51 51 51 51 51]
 [51 51 51 51 51 51 51 51 51 51]
 [51 51 51 51 51 51 51 51 51 51]]

但是,它给出了错误的结果。你会怎么做?


使用字典创建映射。

names_A = ['David', 'Mark', 'Brian', 'Michael']
data_A = [4,3,1,2]

names_B = ['Mark', 'David', 'Michael', 'Brian']
data_B = [51,30,11,29]

lookup_a = dict(zip(names_A, data_A))
lookup_b = dict(zip(names_B, data_B))

mapping = {value_a: lookup_b[key_a] for key_a, value_a in lookup_a.items()}

现在钥匙在mapping将是来自的数字data_A与相应的值data_B.

我从未与numpy但现在看来更换是一件很容易的事。


仅举一个简单列表的例子:

data = [4, 4, 3, 3, 2, 2, 1, 1, 3, 3]
data = [mapping[value] for value in data]

data now is [30, 30, 51, 51, 11, 11, 29, 29, 51, 51].


安装 numpy 后编辑

如果您创建了映射字典,您可以执行以下操作:

data = np.array([[4, 4, 3, 3, 2, 2, 1, 1, 3, 3],
                 [4, 3, 3, 3, 2, 2, 3, 1, 3, 1],
                 [4, 2, 3, 3, 2, 2, 4, 1, 4, 3]])

for row in data:
    for index, value in enumerate(row):
        row[index] = mapping[value]

data is now:

[[32 30 51 51 11 11 29 29 51 51]
 [30 51 51 51 11 11 51 29 51 29]
 [30 11 51 51 11 11 30 29 30 51]]

由于我之前从未使用过 numpy ,可能会有更简单(或更Pythonic)的解决方案,但至少这做了它应该做的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中的元素排列 的相关文章

随机推荐

  • 在 pandas 中,如何对日期时间列进行 groupby weekday() ?

    我想过滤掉周末数据 只查看工作日的数据 周一 0 周五 4 我是 pandas 的新手 在 pandas 中实现此目的的最佳方法是什么 import datetime from pandas import data read csv dat
  • 如何在 PHP 中对数组和数据进行排序?

    这个问题旨在作为有关 PHP 中数组排序问题的参考 人们很容易认为您的特定案例是独特的并且值得提出新问题 但大多数实际上只是此页面上的解决方案之一的微小变化 如果您的问题因与此问题重复而被关闭 请仅在您能解释为什么它与以下所有问题显着不同的
  • Pandas 时间序列数据索引从字符串到浮点[重复]

    这个问题在这里已经有答案了 有人知道如何将字符串输出转换为浮点数吗 我正在尝试创建单独的数据框 Month and day of the week 基于时间戳索引 这df index strftime输出一个字符串 但我需要一个float基
  • 在 JerseyTest 中访问 Spring beans

    我试图弄清楚如何从 JerseyTest 的子类访问 Spring bean 扩展 JerseyTest 我已经设法在测试中加载 Spring 上下文 但我还没有弄清楚如何访问 spring 上下文 我的设置如下所示 public abst
  • 只读模式下不允许写操作(FlushMode.MANUAL)

    我对Spring真的很陌生 我正在使用 JSF Hibernate Spring 开发一个简单的 JEE 应用程序 我在尝试更新 DAO 上的值时遇到一些问题 我确信问题与 Spring 配置 xml 文件有关 但我无法找出是什么 这是我的
  • fprintf 调试断言失败

    我有一个程序 如果我手动启动它 它可以正确运行 但是 如果我尝试添加注册表项以在启动过程中自动启动它 则会收到以下错误 Debug assertion failed str null fprintf c line 55 我尝试在发生任何事情
  • 将 Angular Material 与 Twitter Bootstrap 相结合,不会发生冲突

    我想将 Twitter Bootstrap 与 Angular 材料结合起来 我发现引导材料设计https github com FezVrasta bootstrap material design https github com Fe
  • PyMC:马尔可夫系统中的参数估计

    简单的马尔可夫链 假设我们想要估计系统的参数 以便我们可以在给定时间步 t 的状态的情况下预测系统在时间步 t 1 的状态 PyMC 应该能够轻松处理这个问题 让我们的玩具系统由一维世界中的移动物体组成 状态是对象的位置 我们想要估计潜在变
  • 为 JpaTransactionManager 启用日志记录

    我在 spring 3 5 容器内使用 JpaTransactionManager 和 hibernate 3 我无法启用 JPA 日志记录 我希望查看事务管理日志以调试我的某些服务 我正在使用 log4j 这是我的 log4j prope
  • JWT Web 令牌加密 - SecurityAlgoritms.HmacSha256 与 SecurityAlgoritms.HmacSha256Signature

    用于基于令牌的身份验证Microsoft IdentityModel Tokens提供了可用于创建的安全算法列表SigningCredentials string secretKey MySuperSecretKey byte keybyt
  • 在同一进程中多次运行Scrapy

    我有一个网址列表 我想抓取其中的每一个 请注意 将此数组添加为start urls不是我正在寻找的行为 我希望它在单独的爬网会话中一一运行 我想在同一个进程中多次运行Scrapy 我想将 Scrapy 作为脚本运行 如常见做法 https
  • 通过Java开始SMS编程需要哪些资源? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用循环构建 json 对象?

    我正在尝试循环遍历多个项目 并创建一个 json 对象 每个循环都应该是对象上的一个新项目 但我在执行此操作时遇到了一些问题 似乎只添加了一组项目 而不是多个项目 这是我的代码 jsonObj rows each function inde
  • 使用cmd打开包含多个空格的文件时出现问题

    我使用 java 调用下面的命令 这是java初始化 String fileName C temp A a txt String sCmd cmd c start fileName 这是我打印 sCmd 时得到的结果 cmd c start
  • 使用另一个对象数组过滤对象数组

    这个问题与这个问题类似Jquery 过滤带循环的对象数组 https stackoverflow com questions 30998424 jquery filter array of object with loop但这次我需要使用对
  • 如何将Hive数据表迁移到MySql?

    我想知道如何将日期从 Hive 转移到 MySQL 我看过有关如何将 Hive 数据移动到 Amazon DynamoDB 的示例 但没有看到有关如何将 Hive 数据移动到 MySQL 等 RDBMS 的示例 这是我在 DynamoDB
  • powershell 优雅/干净地关闭 Internet Explorer

    我想干净 优雅地关闭互联网浏览器 taskkill 会关闭它 但是当重新打开它时 它会询问您是否要重新打开上一个会话 尝试 CloseMainWindow 方法 通过向其主窗口发送关闭消息来关闭具有用户界面的进程 Get Process i
  • pyqtgraph ImageView 在多线程时冻结

    我有多个通过 WiFi 无线连接的摄像头 我正在尝试将数据流式传输到客户端 客户端在 GUI 上显示流 我的问题是 pyqtgraph ImageItems 似乎在大约 30 秒后停止重新绘制 或者如果我单击窗口外 或者如果我调整其中一张图
  • 将国际象棋引擎连接到用 Javascript 制作的现有 GUI

    我编写了自己的用于下棋和教授国际象棋的 GUI GUI 是使用 HTML 编写的 用于外观 使用 JavaScript 来实现各个部件的行为 目前该程序不遵循任何国际象棋规则 正确遵循国际象棋规则取决于用户 这允许自由地设置非法位置或多次移
  • Python中的元素排列

    数组 data 的每个元素都必须更改如下 例如 4 应该可以在names A 和data A 中看到 4 的名字 A 是 David 现在 David 应该出现在names B 和data B 中 David 的 data B 是 30 所