python - 使用 python 最通用的列映射

标签 python

我一直在使用 python 进行列切换

my_array[:,[0, 1]] = my_array[:,[1, 0]]

但我现在需要使其更加通用。它应该适用于多列和多个机器,例如“input.txt 的第一列变成output.txt 的第二列,输入的第三列变成输出的第五列...”

我已经尝试过

my_array[:,[1,0,4,3,2]] = my_array[:,[1,2,3,4,5]]

我还可以创建一个名为 col_map.txt 的文件,并且程序应该根据 col_map.txt 中编写的此规则来排列列

col_map.txt
1,2 #1st column of input.txt goes to 2nd column of output.txt
2,1 #2 and 1, respectively
3,5 #3 and 4, respectively
4,4 #4 and 4, respectively, so the position doesn't change
5,3 #5 and 3, respectively

但我还没能尝试这个想法。

最佳答案

在您尝试的过程中,您可能忘记了右侧索引是从零开始的。无论如何,使用 Numpy 数组,仅尝试:

my_array = my_array[:,[1,0,4,3,2]]

你想实现什么目标?您是否使用大型输入文件? 由于您似乎有一个“input.txt”,因此您可以使用 bash 命令,例如 awk:

awk '{print $2,$1,$5,$4,$3}' 输入.txt > 输出.txt

您可能需要在输入和输出中指定字段分隔符:

awk 'BEGIN{FS="\t";OFS="\t";} {print $2,$1,$5,$4,$3}' 输入.txt > 输出.txt

回到Python,如果你的输入文件很大,你不想加载数组中的所有内容,而是一次读取一行,将其拆分,然后在切换元素后将该行重写到输出文件(a建议查看 operator.itemgetter 进行项目选择)。

关于python - 使用 python 最通用的列映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25114152/

相关文章:

python - 比较网格中的邻居 bool numpy 数组

python - 在 pythonanywhere.com 上部署 flask 站点/应用程序

python - Flask:在网站而不是控制台上显示打印?

Python AUTH0 发布请求 : Invalid request payload JSON format

python - 使用 python-onvif-zeep 或 valkka 向 IPcamera 发送 VISCA 命令,并从 DeviceIO 发送接收串行命令服务

javascript - Node 流结尾 : Write after end

python - AWS Cloudwatch Logstream - 关键是什么,以及在获取日志流时如何设置它

python - 在gensim LdaModel中提取主题词概率矩阵

python - python 中枚举的合法用法

python - 网页抓取错误: exceptions. MemoryError