-
-
Notifications
You must be signed in to change notification settings - Fork 18.5k
API: added array #23581
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
API: added array #23581
Changes from 10 commits
bfefc96
51480a3
dcb7931
a635649
fb0d8bc
d58a320
fe06de4
72f7f06
c02e183
a2d3146
37901b0
4403010
9401dd3
838ce5e
5260b99
248e9e0
cf07c80
22490a8
5e0dc62
fe40189
7eb9d08
fa7b200
1ca14fe
4473899
382f57d
dd76a2b
159d3a2
5366950
c818a8f
ba8b807
77cd782
dfada7b
5eff701
9406400
8eb07c3
ea3a118
ecae340
fb814fc
a6f6d29
6c243f3
86b81b5
2c6cf97
50d4206
9e1b4e6
000967d
bf829c3
faf114d
3186ded
1c4da0e
36c6f00
932e119
45d07eb
d1aba73
981f735
1f3bb50
c8d3960
1b9e251
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
""" | ||
All of pandas' ExtensionArrays and ExtensionDtypes. | ||
|
||
See :ref:`extending.extension-types` for more. | ||
""" | ||
from pandas.core.arrays import ( | ||
IntervalArray, PeriodArray, Categorical, SparseArray, IntegerArray, | ||
) | ||
|
||
|
||
__all__ = [ | ||
jreback marked this conversation as resolved.
Show resolved
Hide resolved
|
||
'Categorical', | ||
'IntegerArray', | ||
'IntervalArray', | ||
'PeriodArray', | ||
'SparseArray', | ||
] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
import numpy as np | ||
|
||
from pandas._libs import lib, tslibs | ||
|
||
from pandas.core.dtypes.common import is_extension_array_dtype | ||
from pandas.core.dtypes.dtypes import registry | ||
from pandas.core.dtypes.generic import ABCIndexClass, ABCSeries | ||
jreback marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
|
||
def array(data, dtype=None, copy=False): | ||
""" | ||
Create an array. | ||
|
||
TomAugspurger marked this conversation as resolved.
Show resolved
Hide resolved
|
||
Parameters | ||
---------- | ||
data : Sequence[object] | ||
A sequence of scalar instances for `dtype`. The underlying | ||
array will be extracted from a Series or Index object. | ||
|
||
dtype : Union[str, np.dtype, ExtensionDtype], optional | ||
TomAugspurger marked this conversation as resolved.
Show resolved
Hide resolved
|
||
The dtype to use for the array. This may be a NumPy | ||
dtype, or an extension type registered with pandas using | ||
:meth:`pandas.api.extensions.register_extension_dtype`. | ||
|
||
By default, the dtype will be inferred from the data | ||
with :meth:`numpy.array`. | ||
|
||
copy : bool, default False | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Numpy has a default of True. Do we have a rationale for using False by default? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Was just matching series here. I don't have a strong preference. Let's just match NumPy then. |
||
Whether to copy the data. | ||
|
||
Returns | ||
------- | ||
Array : Union[ndarray, ExtensionArray] | ||
|
||
Examples | ||
-------- | ||
If a dtype is not specified, `data` is passed through to | ||
:meth:`numpy.array`, and an ndarray is returned. | ||
TomAugspurger marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
>>> pd.array([1, 2]) | ||
TomAugspurger marked this conversation as resolved.
Show resolved
Hide resolved
|
||
array([1, 2]) | ||
|
||
Or the NumPy dtype can be specified | ||
|
||
>>> pd.array([1, 2], dtype=np.int32) | ||
array([1, 2], dtype=int32) | ||
|
||
You can use the string alias for `dtype` | ||
|
||
>>> pd.array(['a', 'b', 'a'], dtype='category') | ||
[a, b, a] | ||
Categories (2, object): [a, b] | ||
|
||
Or specify the actual dtype | ||
|
||
>>> pd.array(['a', 'b', 'a'], | ||
... dtype=pd.CategoricalDtype(['a', 'b', 'c'], ordered=True)) | ||
[a, b, a] | ||
Categories (3, object): [a < b < c] | ||
""" | ||
from pandas.core.arrays import period_array | ||
|
||
if isinstance(data, (ABCSeries, ABCIndexClass)): | ||
TomAugspurger marked this conversation as resolved.
Show resolved
Hide resolved
|
||
data = data._values | ||
|
||
# this returns None for not-found dtypes. | ||
dtype = registry.find(dtype) or dtype | ||
|
||
if is_extension_array_dtype(dtype): | ||
cls = dtype.construct_array_type() | ||
return cls._from_sequence(data, dtype=dtype, copy=copy) | ||
|
||
if dtype is None: | ||
inferred_dtype = lib.infer_dtype(data) | ||
jreback marked this conversation as resolved.
Show resolved
Hide resolved
|
||
if inferred_dtype == 'period': | ||
try: | ||
return period_array(data) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should pass copy= here |
||
except tslibs.IncompatibleFrequency: | ||
pass # we return an array below. | ||
|
||
# TODO(DatetimeArray): handle this type | ||
# TODO(BooleanArray): handle this type | ||
|
||
return np.array(data, dtype=dtype, copy=copy) |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -81,7 +81,9 @@ | |
from_arrays | ||
from_tuples | ||
from_breaks | ||
overlaps | ||
set_closed | ||
to_tuples | ||
%(extra_methods)s\ | ||
|
||
%(examples)s\ | ||
|
Uh oh!
There was an error while loading. Please reload this page.