How to check if a python object is a numpy ndarray

JafetVoltron :

I have a function that takes an array as input and does some computation on it. The input array may or may not be a numpy ndarray (may be a list, pandas object, etc).

In the function, I convert the input array (regardless of its type) to a numpy ndarray. But this step may be computationally expensive for large arrays, especially if the function is called multiple times in a for loop.

Hence, I want to convert the input array to numpy ndarray ONLY if it is not already a numpy ndarray.

How can I do this?

import numpy as np

def myfunc(array):
    # Check if array is not already numpy ndarray
    # Not correct way, this is where I need help
    if type(array) != 'numpy.ndarray':
        array = np.array(array)

    # The computation on array
    # Do something with array
    new_array = other_func(array)
    return new_array
hpaulj :

It is simpler to use asarray:

def myfunc(arr):
    arr = np.asarray(arr)
    # The computation on array
    # Do something with array
    new_array = other_func(arr)
    return new_array

If arr is already an array, asarray does not make a copy, so there's no penalty to passing it through asarray. Let numpy do the testing for you.

numpy functions often pass their inputs through asarray (or variant) just make sure the type is what they expect.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=27782&siteId=1