Open In App

Python | Replace negative value with zero in numpy array

Last Updated : 13 Mar, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

Given numpy array, the task is to replace negative value with zero in numpy array. Let’s see a few examples of this problem. 

Method #1: Naive Method 

Python3
# Python code to demonstrate
# to replace negative value with 0
import numpy as np

ini_array1 = np.array([1, 2, -3, 4, -5, -6])

# printing initial arrays
print("initial array", ini_array1)

# code to replace all negative value with 0
ini_array1[ini_array1<0] = 0

# printing result
print("New resulting array: ", ini_array1)
Output:
initial array [ 1  2 -3  4 -5 -6]
New resulting array:  [1 2 0 4 0 0]

The time complexity of this code is O(n), where n is the size of the ini_array1. 

The auxiliary space complexity of this code is O(1), which means it uses a constant amount of extra space, regardless of the input size. 

Method #2: Using np.where 

Python3
# Python code to demonstrate
# to replace negative values with 0
import numpy as np

ini_array1 = np.array([1, 2, -3, 4, -5, -6])

# printing initial arrays
print("initial array", ini_array1)

# code to replace all negative value with 0
result = np.where(ini_array1<0, 0, ini_array1)

# printing result
print("New resulting array: ", result)
Output:
initial array [ 1  2 -3  4 -5 -6]
New resulting array:  [1 2 0 4 0 0]

  Method #3: Using np.clip 

Python3
# Python code to demonstrate
# to replace negative values with 0
import numpy as np

# supposing maxx value array can hold
maxx = 1000

ini_array1 = np.array([1, 2, -3, 4, -5, -6])

# printing initial arrays
print("initial array", ini_array1)

# code to replace all negative value with 0
result = np.clip(ini_array1, 0, 1000)

# printing result
print("New resulting array: ", result)
Output:
initial array [ 1  2 -3  4 -5 -6]
New resulting array:  [1 2 0 4 0 0]

  Method #4: Comparing the given array with an array of zeros and write in the maximum value from the two arrays as the output. 

Python3
# Python code to demonstrate
# to replace negative values with 0
import numpy as np
 
ini_array1 = np.array([1, 2, -3, 4, -5, -6])
 
# printing initial arrays
print("initial array", ini_array1)
 
# Creating a array of 0
zero_array = np.zeros(ini_array1.shape, dtype=ini_array1.dtype)
print("Zero array", zero_array)

# code to replace all negative value with 0
ini_array2 = np.maximum(ini_array1, zero_array)

# printing result
print("New resulting array: ", ini_array2)
Output:
initial array [ 1  2 -3  4 -5 -6]
Zero array [0 0 0 0 0 0]
New resulting array:  [1 2 0 4 0 0]

The time complexity of the given Python code is O(n), where n is the size of the input array ini_array1

The auxiliary space complexity of the code is O(n), as it creates a new array of the same size as the input array to store the 0 values.

Method #5: Using np.vectorize

You could use a lambda function to transform the elements of the array and replace negative values with zeros. This can be done using the NumPy vectorize function.

Python3
import numpy as np

# Initialize the array
arr = np.array([1, 2, -3, 4, -5, -6])

# Print the initial array
print("Initial array:", arr)

# Replace negative values with zeros using a lambda function
replace_negatives = np.vectorize(lambda x: 0 if x < 0 else x)
result = replace_negatives(arr)

# Print the resulting array
print("Resulting array:", result)
#This code is contributed by Edula Vinay Kumar Reddy

Output:

Initial array: [ 1  2 -3  4 -5 -6]
Resulting array: [1 2 0 4 0 0]
 

Time complexity: O(n) where n is the number of elements in the array
Auxiliary Space: O(n) as a new array with the transformed elements is created
 


Practice Tags :

Similar Reads

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy