1

I was transforming categorical features using factorize() function which returns a tuple of a cupy array and strings. I assigned the cupy array into a variable named codes. However, I can't seem to get the unique values of codes using codes.unique()

It returns an error message:

AttrubuteError: 'cupy.core.core.ndarray' object has no attribute 'unique'

# use factorize to create continuous integers from a categorical feature (returns a tuple)
codes, uniques = df_train['product_id'].factorize()
codes.unique()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-59-27db0fac06a1> in <module>()
----> 1 codes.unique()

AttributeError: 'cupy.core.core.ndarray' object has no attribute 'unique'

code

Appreciate the help and suggestion to make it work

GooDeeJAY
  • 1,681
  • 2
  • 20
  • 27
radiozz
  • 13
  • 1
  • 4

2 Answers2

1

CuPy is designed to be highly compatible with NumPy, and in this case note that numpy.ndarray does not have a unique() method either; for both NumPy and CuPy it lives under the main namespace as a regular function (numpy.unique()/cupy.unique()). So it is an invalid usage not specific to CuPy IMHO.

Leo Fang
  • 773
  • 5
  • 12
0

I think you need to call cupy.unique(codes) instead of codes.unique() like you could if it were a regular NumPy array. Docs: https://docs.cupy.dev/en/stable/reference/generated/cupy.unique.html

It was added in this PR: https://github.com/cupy/cupy/pull/1140 which as you may be able to see did not add it as a method on the array type.

John Zwinck
  • 239,568
  • 38
  • 324
  • 436