Home > Back-end >  Modifying array elements based on an absolute difference value
Modifying array elements based on an absolute difference value

Time:10-27

I have two arrays of the same length as shown below.

import numpy as np
y1 = [12.1, 6.2, 1.4, 0.8, 5.6, 6.8, 8.5]
y2 = [8.2, 5.6, 2.8, 1.4, 2.5, 4.2, 6.4]
y1_a = np.array(y1)
y2_a = np.array(y2)
print(y1_a)
print(y2_a)
for i in range(len(y2_a)):
    y3_a[i] = abs(y2_a[i] - y2_a[i])

I am computing the absolute difference at each index/location between the two arrays. I have to replace 'y1_a' with 'y2_a' whenever the absolute difference exceeds 2.0 at a given index/location and write it to a new array variable 'y3_a'. The starter code is added.

CodePudding user response:

First of all, let numpy do the lifting for you. You can calculate your absolute differences without a manual for loop:

abs_diff = np.abs(y2_a - y1_a) # I assume your original code has a typo

Now you can get all the values where the absolute difference is more than 2.0:

y3_a = y1_a
y3_a[abs_diff > 2.0] = y2_a[abs_diff > 2.0]
  • Related