Numpy array:当一个2darray的行等于另一个2darray的行时,更改最后一列的值

2024-06-28 20:48:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的二维数字阵列(称为数据)。我想更改所有数据行的最后一个值(列),如果这些数据行类似于一个形状相同的外部行(称为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}$

我的问题是:我觉得这段代码可以增强,对于我想做的事情来说,它相当复杂。我觉得使用一些(内置的)方法我错过或聪明的直接(如何?)比较一下,我可以让代码更清晰、更快。谢谢你的帮助。在


Tags: ofto数据innumpyfordatabe