{"record":{"id":"ad959a71519d0bb8","repo":"pandas-dev/pandas","slug":"values-must-be-a-numpy-array-not-type-values","errorCode":null,"errorMessage":"'values' must be a NumPy array, not {type(values).__name__}","messagePattern":"'values' must be a NumPy array, not (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"pandas/core/arrays/numpy_.py","lineNumber":128,"sourceCode":"    # ExtensionBlock, search for `ABCNumpyExtensionArray`. We check for\n    # that _typ to ensure that users don't unnecessarily use EAs inside\n    # pandas internals, which turns off things like block consolidation.\n    _typ = \"npy_extension\"\n    __array_priority__ = 1000\n    _ndarray: np.ndarray\n    _dtype: NumpyEADtype\n    _internal_fill_value = np.nan\n\n    # ------------------------------------------------------------------------\n    # Constructors\n\n    def __init__(\n        self, values: np.ndarray | NumpyExtensionArray, copy: bool = False\n    ) -> None:\n        if isinstance(values, type(self)):\n            values = values._ndarray\n        if not isinstance(values, np.ndarray):\n            raise ValueError(\n                f\"'values' must be a NumPy array, not {type(values).__name__}\"\n            )\n\n        if values.ndim == 0:\n            # Technically we support 2, but do not advertise that fact.\n            raise ValueError(\"NumpyExtensionArray must be 1-dimensional.\")\n\n        if copy:\n            values = values.copy()\n\n        dtype = NumpyEADtype(values.dtype)\n        super().__init__(values, dtype)\n\n    @classmethod\n    def _from_sequence(\n        cls, scalars, *, dtype: Dtype | None = None, copy: bool = False\n    ) -> NumpyExtensionArray:\n        if isinstance(dtype, NumpyEADtype):","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/pandas-dev/pandas/blob/3b7651241d4da534b3559b60ef128e1c34f54116/pandas/core/arrays/numpy_.py#L110-L146","documentation":"Raised by NumpyExtensionArray.__init__ when values is neither a NumpyExtensionArray nor an np.ndarray. NumpyExtensionArray is a thin extension-array wrapper over a single numpy ndarray; the public constructor only accepts that raw ndarray. Lists, tuples, Series, Index objects, or scalars are rejected — callers should use pd.array() or np.asarray() first. Note this raises ValueError (not TypeError), which is slightly unusual.","triggerScenarios":"pd.arrays.NumpyExtensionArray([1, 2, 3]) — a Python list. pd.arrays.NumpyExtensionArray(pd.Series([1,2,3])). pd.arrays.NumpyExtensionArray('x'). Any path that hands a non-ndarray to the constructor directly.","commonSituations":"Users constructing NumpyExtensionArray explicitly (rather than via pd.array(..., dtype=numpy dtype)) and passing a list; tutorials that show the class but not the factory.","solutions":["Wrap in np.asarray first: pd.arrays.NumpyExtensionArray(np.asarray([1, 2, 3])).","Prefer the factory: pd.array([1, 2, 3]) returns a NumpyExtensionArray for plain numpy dtypes.","If starting from a Series, pass series.to_numpy()."],"exampleFix":"# before\npd.arrays.NumpyExtensionArray([1, 2, 3])  # raises\n\n# after\npd.arrays.NumpyExtensionArray(np.asarray([1, 2, 3]))","handlingStrategy":"validation","validationCode":"import numpy as np\n\ndef to_numpy_extension_array(values):\n    if not isinstance(values, np.ndarray):\n        values = np.asarray(values)\n    return pd.arrays.NumpyExtensionArray(values)","typeGuard":"import numpy as np\n\ndef is_ndarray_or_nea(obj) -> bool:\n    return isinstance(obj, (np.ndarray, pd.arrays.NumpyExtensionArray))","tryCatchPattern":"try:\n    pd.arrays.NumpyExtensionArray(values)\nexcept ValueError as e:\n    if 'must be a NumPy array' in str(e):\n        pd.arrays.NumpyExtensionArray(np.asarray(values))\n    else:\n        raise","preventionTips":["Prefer pd.array(values) which returns a NumpyExtensionArray for plain numpy dtypes.","Always np.asarray() list/tuple/Series inputs before the constructor.","Remember this error is ValueError, not TypeError — catch accordingly."],"tags":["pandas","numpy-extension-array","constructor","dtype"],"backgroundTag":null,"analyzedSha":"3b7651241d4da534b3559b60ef128e1c34f54116","analyzedAt":"2026-08-11T22:10:44.015Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}