【发布时间】:2017-03-30 11:34:19
【问题描述】:
我有一个包含大约 700,000 个类的大型 numpy 1-d。此外,我还有另一个类似大小的数组,其中包含类的新值。
示例数组
original_classes = np.array([0,1,2,3,4,5,6,7,8,9,10,10])
new_classes = np.array([1,0,1,2,2,10,1,6,6,9,5,12])
期望的输出
>>> reclassify_function(original_classes, new_classes)
array([ 1, 1, 1, 1, 1, 12, 1, 1, 9, 12, 12])
困难在于存在多个类关系。
原来的类 1 应该得到一个新的值 0,这意味着 0 和 1 是相等的类,并且这些值的所有出现都应该分配给同一个新的类号。原类 2 应归类为 1,这意味着类 2 等于类 0 和类 1。因此原类 0-2 应分配给相同的新类号等...
由于我正在处理大型数组,我希望重新分类函数被矢量化。
【问题讨论】:
-
包含 70,000 个项目的数组?它一点也不大。尝试使用循环实现。如果你做对了,如果你对性能不满意,请在此处发布。
-
对不起,应该是 700,000。已经在研究循环方法了!
-
这将占用大约 2.7MB 的内存。还是没那么大。
-
在您的示例中,1 变为 0,0 变为 1。这不是无限循环吗?
-
我只是想指出 0 和 1(以及 2 和 6)是同一个类。他们被分配到哪个新班级编号并不重要。对于代码示例,您可以查看未矢量化方法。
标签: python arrays numpy classification vectorization