从 numpy 数组中删除元素正在更改原始列表

Deleting elements from numpy array is altering original list

提问人:GaTe 提问时间:11/17/2023 最后编辑:GaTe 更新时间:11/18/2023 访问量:59

问:

我有一个函数,基本上看起来像这样:

def calculatRatioList(self, inputList=None, listIndex=None):
    divisorArray = np.reshape(np.asarray(inputList[listIndex]), (-1))
    dividendArray = inputList
    ratioList = []
    # take element from inputList which will be the dividend
    for divisorIndex in range(len(divisorArray)):
        columnList = []
        del dividendArray[listIndex]
        for dividend_column in range(len(dividendArray)):
            quotient = 0
            dividend = np.asarray(dividendArray)[dividend_column][divisorIndex]
            divisor = float(divisorArray[divisorIndex])
            try:
                quotient = dividend / divisor
            except ZeroDivisionError:
                quotient = 0
            columnList.append(quotient)
        ratioList.append(columnList)
    return ratioList

我希望人们可以通过查看上面的代码来掌握这个想法。无论如何,简要介绍的想法是:取一个二维数组 (n,5),其中 n 是任意数字。该参数是表示行的参数,该行应被带到 divisorArray,dividendArray 应从 inputList 中获取其余元素。listIndex

为了删除元素并像它一样通过,它总是在任一中更改我的 inputList。del dividendArray[listIndex]main.py

有人可以解释这种行为有什么好处吗?这让我很恼火,现在它似乎更像是一个错误,而不是凭直觉制造的东西。

什么是删除 numpy 数组中的元素的便捷方法,而无需通过列表

我通过一个输入,如下所示:inputList = [[a11, a12, a13, a14], [a21, a22, a23, a24], [a31, a32, a33, a34], [a41, a42, a43, a44]]

此输入分配给 dividendArray。在行之后,可以找到del dividendArray[listIndex]inputList = [[a11, a12, a13, a14], [a21, a22, a23, a24], [a31, a32, a33, a34]]

python 数组 numpy del

评论


答: 暂无答案