2018-08-05 16:09:58 -04:00
|
|
|
.. Licensed to the Apache Software Foundation (ASF) under one
|
|
|
|
|
.. or more contributor license agreements. See the NOTICE file
|
|
|
|
|
.. distributed with this work for additional information
|
|
|
|
|
.. regarding copyright ownership. The ASF licenses this file
|
|
|
|
|
.. to you under the Apache License, Version 2.0 (the
|
|
|
|
|
.. "License"); you may not use this file except in compliance
|
|
|
|
|
.. with the License. You may obtain a copy of the License at
|
|
|
|
|
|
|
|
|
|
.. http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
|
|
.. Unless required by applicable law or agreed to in writing,
|
|
|
|
|
.. software distributed under the License is distributed on an
|
|
|
|
|
.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
|
|
|
.. KIND, either express or implied. See the License for the
|
|
|
|
|
.. specific language governing permissions and limitations
|
|
|
|
|
.. under the License.
|
|
|
|
|
|
|
|
|
|
.. _numpy_interop:
|
|
|
|
|
|
2018-12-05 19:54:57 -06:00
|
|
|
NumPy Integration
|
|
|
|
|
=================
|
2018-08-05 16:09:58 -04:00
|
|
|
|
|
|
|
|
PyArrow allows converting back and forth from
|
|
|
|
|
`NumPy <https://www.numpy.org/>`_ arrays to Arrow :ref:`Arrays <data.array>`.
|
|
|
|
|
|
|
|
|
|
NumPy to Arrow
|
|
|
|
|
--------------
|
|
|
|
|
|
|
|
|
|
To convert a NumPy array to Arrow, one can simply call the :func:`pyarrow.array`
|
|
|
|
|
factory function.
|
|
|
|
|
|
2026-01-30 09:09:33 +01:00
|
|
|
.. code-block:: python
|
2018-08-05 16:09:58 -04:00
|
|
|
|
|
|
|
|
>>> import numpy as np
|
|
|
|
|
>>> import pyarrow as pa
|
|
|
|
|
>>> data = np.arange(10, dtype='int16')
|
|
|
|
|
>>> arr = pa.array(data)
|
|
|
|
|
>>> arr
|
2026-01-30 09:09:33 +01:00
|
|
|
<pyarrow.lib.Int16Array object at ...>
|
2018-08-05 16:09:58 -04:00
|
|
|
[
|
|
|
|
|
0,
|
|
|
|
|
1,
|
|
|
|
|
2,
|
|
|
|
|
3,
|
|
|
|
|
4,
|
|
|
|
|
5,
|
|
|
|
|
6,
|
|
|
|
|
7,
|
|
|
|
|
8,
|
|
|
|
|
9
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
Converting from NumPy supports a wide range of input dtypes, including
|
|
|
|
|
structured dtypes or strings.
|
|
|
|
|
|
|
|
|
|
Arrow to NumPy
|
|
|
|
|
--------------
|
|
|
|
|
|
|
|
|
|
In the reverse direction, it is possible to produce a view of an Arrow Array
|
|
|
|
|
for use with NumPy using the :meth:`~pyarrow.Array.to_numpy` method.
|
|
|
|
|
This is limited to primitive types for which NumPy has the same physical
|
|
|
|
|
representation as Arrow, and assuming the Arrow data has no nulls.
|
|
|
|
|
|
2026-01-30 09:09:33 +01:00
|
|
|
.. code-block:: python
|
2018-08-05 16:09:58 -04:00
|
|
|
|
|
|
|
|
>>> import numpy as np
|
|
|
|
|
>>> import pyarrow as pa
|
|
|
|
|
>>> arr = pa.array([4, 5, 6], type=pa.int32())
|
|
|
|
|
>>> view = arr.to_numpy()
|
|
|
|
|
>>> view
|
|
|
|
|
array([4, 5, 6], dtype=int32)
|
|
|
|
|
|
|
|
|
|
For more complex data types, you have to use the :meth:`~pyarrow.Array.to_pandas`
|
|
|
|
|
method (which will construct a Numpy array with Pandas semantics for, e.g.,
|
|
|
|
|
representation of null values).
|