-1

I have an array of values and I want to set specific values to integers. Anything below 0.95 set to 0, anything above 1.6 set to 2. How can I set everything between 0.95 and 1.6 to 1?

n1_binary = np.where(n1_img_resize < 0.95, 0, n1_img_resize)
n1_binary = np.where(n1_binary > 1.6, 2, n1_binary)
rzaratx
  • 756
  • 3
  • 9
  • 29

2 Answers2

1

Like this in one line using np.where:

n1_binary = np.where((n1_binary > 0.95) & (n1_binary <= 1.6), 1, n1_binary)

Check below example:

In [652]: a = np.array([0.99, 1.23, 1.7, 9])    
In [653]: a = np.where((a > 0.95) & (a <= 1.6), 1, a)

In [654]: a
Out[654]: array([1. , 1. , 1.7, 9. ])
Mayank Porwal
  • 33,470
  • 8
  • 37
  • 58
0

Try this:

a = np.array([0.3, 5, 7, 2])
a[a < 0.95] = 0
a[a > 1.6] = 1

This is very clear and consice, and tells exactly what you are doing. a now is:

[0.0, 1.0, 1.0, 1.0]
xilpex
  • 3,097
  • 2
  • 14
  • 45