Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

💡 Type hints for Numpy and Pandas

License

NotificationsYou must be signed in to change notification settings

ramonhagenaars/nptyping

Repository files navigation

PyPI versionDownloadsPyPI versioncodecovCode style

🧊Type hints forNumPy
🐼Type hints forpandas.DataFrame
💡Extensive dynamic type checks for dtypes shapes and structures
🚀Jump to the Quickstart

Example of a hintednumpy.ndarray:

>>>fromnptypingimportNDArray,Int,Shape>>>arr:NDArray[Shape["2, 2"],Int]

Example of a hintedpandas.DataFrame:

>>>fromnptypingimportDataFrame,StructureasS>>>df:DataFrame[S["name: Str, x: Float, y: Float"]]

Installation

CommandDescription
pip install nptypingInstall the basics
pip install nptyping[pandas]Install with pandas extension
pip install nptyping[complete]Install with all extensions

Instance checking

Example of instance checking:

>>>importnumpyasnp>>>isinstance(np.array([[1,2], [3,4]]),NDArray[Shape["2, 2"],Int])True>>>isinstance(np.array([[1.,2.], [3.,4.]]),NDArray[Shape["2, 2"],Int])False>>>isinstance(np.array([1,2,3,4]),NDArray[Shape["2, 2"],Int])False

nptyping also providesassert_isinstance. In contrast toassert isinstance(...), this won't cause IDEs or MyPycomplaints. Here is an example:

>>>fromnptypingimportassert_isinstance>>>assert_isinstance(np.array([1]),NDArray[Shape["1"],Int])True

NumPy Structured arrays

You can also express structured arrays usingnptyping.Structure:

>>>fromnptypingimportStructure>>>Structure["name: Str, age: Int"]Structure['age: Int, name: Str']

Here is an example to see it in action:

>>>fromtypingimportAny>>>importnumpyasnp>>>fromnptypingimportNDArray,Structure>>>arr=np.array([("Peter",34)],dtype=[("name","U10"), ("age","i4")])>>>isinstance(arr,NDArray[Any,Structure["name: Str, age: Int"]])True

Subarrays can be expressed with a shape expression between square brackets:

>>>Structure["name: Int[3, 3]"]Structure['name: Int[3, 3]']

NumPy Record arrays

The recarray is a specialization of a structured array. You can useRecArrayto express them.

>>>fromnptypingimportRecArray>>>arr=np.array([("Peter",34)],dtype=[("name","U10"), ("age","i4")])>>>rec_arr=arr.view(np.recarray)>>>isinstance(rec_arr,RecArray[Any,Structure["name: Str, age: Int"]])True

Pandas DataFrames

Pandas DataFrames can be expressed withStructure also. To make it more concise, you may want to aliasStructure.

>>>fromnptypingimportDataFrame,StructureasS>>>df:DataFrame[S["x: Float, y: Float"]]

More examples

Here is an example of a rich expression that can be done withnptyping:

defplan_route(locations:NDArray[Shape["[from, to], [x, y]"],Float])->NDArray[Shape["* stops, [x, y]"],Float]:    ...

More examples can be found in thedocumentation.

Documentation

  • User documentation
    The place to go if you are using this library.

  • Release notes
    To see what's new, check out the release notes.

  • Contributing
    If you're interested in developing along, find the guidelines here.

  • License
    If you want to check out how open source this library is.


[8]ページ先頭

©2009-2025 Movatter.jp