我在寻找一个更聪明更好的解决方案。在
我想根据标签内容对数字字段应用不同的缩放因子。希望下面的代码可以说明我要实现的目标:
PS = [('A', 'LABEL1', 20),
('B', 'LABEL2', 15),
('C', 'LABEL3', 120),
('D', 'LABEL1', 3),]
FACTOR = [('LABEL1', 0.1), ('LABEL2', 0.5), ('LABEL3', 10)]
d_factor = dict(FACTOR)
for p in PS:
newp = (p[0], p[1], p[2]*d_factor[p[1]])
print newp
这是一个非常简单的操作,但是我需要在至少有一百万行的数据集上执行它。在
所以,当然,越快越好。在
这些因素将被提前知道,它们的数量不会超过20到30个。在
有什么矩阵或利纳格的把戏可以用吗?
ndarray可以接受单元格中的文本值吗?
如果您想混合数据类型,您需要structured arrays。在
如果您想要查找数组中匹配值的索引,
searchsorted
你的例子是这样的:
您的结构化阵列:
^{pr2}$您可以像这样访问单个字段(或者您可以给它们命名;请参阅文档):
如何在PS上查找因子(因子必须排序):
现在只需创建一个新数组并乘法:
如果比较两个numpy数组,就会得到相应的索引。您可以使用这些索引来执行集合操作。这可能不是最快的修改,但它简单明了。如果PS需要您显示的结构,可以使用自定义dtype并使用Nx3数组。在
我觉得纽比帮不了你。顺便说一句,它是
ndarray
,不是nparray
。。。在也许你可以用发电机。见http://www.dabeaz.com/generators/index.html
相关问题 更多 >
编程相关推荐