在数组中查找值并有效地更改它们

时间:2016-09-02 14:43:20

标签: python arrays

我正在处理一个包含大约300 000个值的大型数组。它有10万行3列。我正在使用此数组进行迭代,如果第一列中的任何值超过了10的限制,我希望替换该数字。有没有比运行这样的东西更有效的方式?:

for i in range(N):
    if array[i][0]>10:
        array[i][0] = 0 

我需要为其他两列重复这个序列,其中包括我的所有其他迭代使我的代码相当慢。

3 个答案:

答案 0 :(得分:2)

将数组转换为numpy数组(numpy.asarray),然后替换将使用以下值的值:

import numpy as np
N = np.asarray(N)

N[N > 10] = 0

numpy.asarray documentation

答案 1 :(得分:1)

我假设您可能不希望为每列使用相同的阈值/替换值。在这种情况下,您可以将三个项目打包在元组列表中并迭代它。

import numpy as np

arr = np.ndarray(your_array)
#Edited with your values, and a more than symbol
threshold = 10
column_id = 0
replace_value = 0
arr[arr[:, column_id] > threshold, column_id] = replace_value

根据需要设置thresholdcolumn_idreplace_value

答案 2 :(得分:0)

如果我理解你正确的话,你会找到类似的东西:

>>> from numpy import array
>>> a = array([[1,2,3],[4,5,6],[7,8,9]])
>>> a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> a[a>5]=10       # <--- here the "magic" happens
>>> a
array([[ 1,  2,  3],
       [ 4,  5, 10],
       [10, 10, 10]])