np.where在给定列表列表的情况下不更改numpy数组

时间:2019-07-19 02:05:41

标签: python numpy

我想有条件地填充给定列表的numpy数组。

遍历 <unmarshal id="_FileParsing"> <bindy classType="com.openmzn.ktds.dao.volte.input.VoLTEBody" locale="korea" type="Fixed"/> </unmarshal> <to id="_validateParsing" uri="language:javascript:classpath:spring/rules/volte/volte.js"/> <multicast id="_FileDistributor" parallelProcessing="false"> <toD id="_ProcessNRat" uri="direct:NRAT"/> <toD id="_ProcessDrop" uri="direct:DROP"/> </multicast> numpy数组的每个元素并查找 var bodyList = exchange.in.getBody(ArrayList.class); if(!CollectionUtils.isEmpty(bodyList)) { for (total_count = 0; total_count < bodyList.size(); total_count++) { uBody = bodyList[total_count]; enriched = enrich(uBody); result = validate(enriched); resultList.add(result); ... } function enrich(uBody) { ... } function validate(enriched) { ... } 来查看它是否具有对值,例如1具有对值35。然后,将1更改为35 my_list

dup_list

理想的结果my_list

my_list = np.array([1, 2, 3, 4])
dup_list = [[1, 35], [4, 31]]

我下面的代码没有任何改变...

my_list

2 个答案:

答案 0 :(得分:0)

我认为这就是您想要做的:

import numpy as np

my_list = np.array([1, 2, 3, 4])
dup_list = [[1, 35], [4, 31]]

for dup in dup_list:
    my_list[np.where(my_list==dup[0])] = dup[1]

print(my_list)

结果:

[35  2  3 31]

答案 1 :(得分:0)

您可以尝试numpy.vectorize方法。但是,这要求您首先将重复的列表放入字典形式,并包含2和3的字典键。

import numpy as np

my_list = np.array([1, 2, 3, 4])
dup_list = {1: 35, 4: 31 , 2:2, 3:3}

print(np.vectorize(dup_list.get)(my_list))

您可以在np.vectorize

阅读更多内容