我有一个巨大的二维数字阵列(称为数据)。我想更改所有数据行的最后一个值(列),如果这些数据行类似于一个形状相同的外部行(称为ExtLine)。在
# -*- coding: utf-8 -*-
import numpy
DATA=numpy.array([
[1,2,3,4,5,6,0],
[2,5,6,84,1,6,0],
[9,9,9,9,9,9,0],
[1,2,3,4,5,6,0],
[2,5,6,84,1,6,0],
[0,2,5,4,8,9,0] ])
# Pool of lines that will be compared to DATA
PoolOfExtLines=numpy.array([[1,2,3,4,5,6,0],[2,5,6,84,1,6,0]])
for j in xrange(PoolOfExtLines.shape[0]): # loop on pool of lines
# convert ExtLine into a continous code (to be compare to future lines of DATA
b=numpy.ascontiguousarray(PoolOfExtLines[j]).view(numpy.dtype((numpy.void, PoolOfExtLines[j].dtype.itemsize * PoolOfExtLines[j].shape[0])))
for i in xrange(DATA.shape[0]): # loop on DATA lines
# convert the current line into a continous code (to be compare to b)
a=numpy.ascontiguousarray(DATA[i]).view(numpy.dtype((numpy.void, DATA[i].dtype.itemsize * DATA[i].shape[0])))
if a == b:
DATA[i,-1]=-1
结果生成了一个按我需要修改的数据数组(tag-1在行尾,与PoolOfExtLines的类似:
^{pr2}$我的问题是:我觉得这段代码可以增强,对于我想做的事情来说,它相当复杂。我觉得使用一些(内置的)方法我错过或聪明的直接(如何?)比较一下,我可以让代码更清晰、更快。谢谢你的帮助。在
您可以使用^{} 功能和^{} 以矢量化的方式解决它-
样本运行-
^{pr2}$相关问题 更多 >
编程相关推荐