python - 使用 for 循环时加速 Python 中的 numpy 代码
问题描述
我一直在编写一小段代码,想知道是否有办法加快它的速度。我正在尝试将第二列中字符串的每个值与第三列中的每个值进行比较。换句话说,我将第一列中的“Z”值与第二列中的“Z”值进行比较。然后第一列中的“Z”值第二列中的“J2”值......对第一列中的所有字符串重复此操作。
大批:
array([['Z', 0.0, 0.0],
['J2', 1.0, 0.0],
['I8', 2.0, 3.0],
['K', 2.0, 27.0],
['B7', 0.0, 0.0]], dtype=object)
这是我最初使用的代码:
import numpy as np
Tlist = []
for i, x in enumerate(df4[:,0]):
for j, v in enumerate(df4[:,0]):
Tlist.append((x,v, df4[i][1], df4[j][2]))
期望的输出:
[('Z', 'Z', 0.0, 0.0),
('Z', 'J2', 0.0, 0.0),
('Z', 'I8', 0.0, 3.0),
('Z', 'K', 0.0, 27.0),
('Z', 'B7', 0.0, 0.0),
('J2', 'Z', 1.0, 0.0),
('J2', 'J2', 1.0, 0.0),
('J2', 'I8', 1.0, 3.0),
('J2', 'K', 1.0, 27.0),
('J2', 'B7', 1.0, 0.0),
('I8', 'Z', 2.0, 0.0),
('I8', 'J2', 2.0, 0.0),
('I8', 'I8', 2.0, 3.0),
('I8', 'K', 2.0, 27.0),
('I8', 'B7', 2.0, 0.0),
('K', 'Z', 2.0, 0.0),
('K', 'J2', 2.0, 0.0),
('K', 'I8', 2.0, 3.0),
('K', 'K', 2.0, 27.0),
('K', 'B7', 2.0, 0.0),
('B7', 'Z', 0.0, 0.0),
('B7', 'J2', 0.0, 0.0),
('B7', 'I8', 0.0, 3.0),
('B7', 'K', 0.0, 27.0),
('B7', 'B7', 0.0, 0.0)]
我尝试了以下方法:
# this function assumes that len(df4) == 100
def new_func():
lst = []
i = [k for k in range(0,len(df4))]
x = [v for v in df4[:,0]]
j = [i for i in range(0,100)]*100
z = [i for i in df4[:,0]]*len(x*10)
lst.append((x,z,df4[i][1], df4[j][2]))
return lst
但是上面的代码没有给我想要的输出。任何想法都会有帮助。
解决方案
推荐阅读
- javascript - 仅当光标来自该元素之外时如何触发“onmouseenter”
- javascript - 快速调用时,在最短的时间内显示一个标签
- java - 使用灵活适配器的粘性部分标题 RecyclerView?
- javascript - 如何在用户在 html textarea 中输入文本之前添加永久文本?
- javascript - 如何查看整个定义:Angular 7 中节点模块的函数和变量?
- android - 从 onDraw 为 clipPath 设置动画
- .htaccess - 创建了 cPanel 子域,子文件夹内的文件显示 500 错误
- push-notification - 注销后停止推送通知
- javascript - 如何从表中获取输入值(无 ID)
- python - 熊猫数据框“ValueError:无法从重复轴重新索引”重复索引强力解决方案?