numpy 根据条件执行元素操作

kqhtkvqz  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(108)

我有原始数据,并希望根据值进行校准。我想做这样的事情,但在一个 numpy 方式。

arr = list(range(1000)) # random array
for i in range(len(arr)):
    if arr[i] > 200 and arr[i] < 500:
        arr[i] = arr[i]*2.5
    elif arr[i] >= 500 and arr[i] < 1000:
        arr[i] = arr[i]*2.3
enyaitl3

enyaitl31#

如果你想要一个工作代码,你不需要做太多的修改:

arr = np.arange(1000) # similar to range(1000)
for i in range(arr.shape[0]): # use arr.shape[0]
    if 200 < arr[i] < 500:  # can simplify here
        arr[i] = arr[i]*2.5
    elif 500 <= arr[i] < 1000:
        arr[i] = arr[i]*2.3

你也可以做复杂的逻辑运算,比如

arr[np.logical_and(arr > 200, arr < 500)] *= 2.5
arr[np.logical_and(arr > 500, arr < 1000)] *= 2.3

这将只对数组中遵循方括号中的写入条件的元素进行操作

相关问题