0

我在下面使用 fn:

def TABs4_tmp(x,ee,M,nrm1):  
    M += dot(sign(ee),sign(x.T))/nrm1 

ex:
      nrm1 is scalar= 2^10  
      ee is scalar= 1  
      x is an array of 100 elements

我在我的程序中多次调用此函数,并且 M 数组(大小 100)的每个元素的值每次都会更新。当前 M 的元素可以采用任何值,但我需要元素值受到一些最大值的限制让见 2。

M 的元素,值小于 2 的元素可以在调用此函数时更新为新值,但达到最大值 2 的元素不应更新。

我是 Python 新手,请帮我提出任何解决方案。

4

2 回答 2

0

Numpy 正好有这方面的功能。

它们被称为MaskedArray

import numpy.ma as ma

M = ma.MaskedAray(M)

def TABs4_tmp(x,ee,M,nrm1):
    M = ma.masked_greater(2,M)
    M += dot(sign(ee),sign(x.T))/nrm1 

那应该只添加到未屏蔽的部分。

于 2013-06-14T14:01:20.953 回答
0
def TABs4_tmp(x,ee,M,nrm1): 
    temp = dot(sign(ee),sign(x.T))/nrm1 
    if temp<2:
        M += temp
于 2013-06-14T13:50:20.433 回答