virtuelle Umgebungen teil20 und teil20a
This commit is contained in:
454
teil20/lib/python3.11/site-packages/numpy/__init__.py
Normal file
454
teil20/lib/python3.11/site-packages/numpy/__init__.py
Normal file
@@ -0,0 +1,454 @@
|
||||
"""
|
||||
NumPy
|
||||
=====
|
||||
|
||||
Provides
|
||||
1. An array object of arbitrary homogeneous items
|
||||
2. Fast mathematical operations over arrays
|
||||
3. Linear Algebra, Fourier Transforms, Random Number Generation
|
||||
|
||||
How to use the documentation
|
||||
----------------------------
|
||||
Documentation is available in two forms: docstrings provided
|
||||
with the code, and a loose standing reference guide, available from
|
||||
`the NumPy homepage <https://numpy.org>`_.
|
||||
|
||||
We recommend exploring the docstrings using
|
||||
`IPython <https://ipython.org>`_, an advanced Python shell with
|
||||
TAB-completion and introspection capabilities. See below for further
|
||||
instructions.
|
||||
|
||||
The docstring examples assume that `numpy` has been imported as ``np``::
|
||||
|
||||
>>> import numpy as np
|
||||
|
||||
Code snippets are indicated by three greater-than signs::
|
||||
|
||||
>>> x = 42
|
||||
>>> x = x + 1
|
||||
|
||||
Use the built-in ``help`` function to view a function's docstring::
|
||||
|
||||
>>> help(np.sort)
|
||||
... # doctest: +SKIP
|
||||
|
||||
For some objects, ``np.info(obj)`` may provide additional help. This is
|
||||
particularly true if you see the line "Help on ufunc object:" at the top
|
||||
of the help() page. Ufuncs are implemented in C, not Python, for speed.
|
||||
The native Python help() does not know how to view their help, but our
|
||||
np.info() function does.
|
||||
|
||||
To search for documents containing a keyword, do::
|
||||
|
||||
>>> np.lookfor('keyword')
|
||||
... # doctest: +SKIP
|
||||
|
||||
General-purpose documents like a glossary and help on the basic concepts
|
||||
of numpy are available under the ``doc`` sub-module::
|
||||
|
||||
>>> from numpy import doc
|
||||
>>> help(doc)
|
||||
... # doctest: +SKIP
|
||||
|
||||
Available subpackages
|
||||
---------------------
|
||||
lib
|
||||
Basic functions used by several sub-packages.
|
||||
random
|
||||
Core Random Tools
|
||||
linalg
|
||||
Core Linear Algebra Tools
|
||||
fft
|
||||
Core FFT routines
|
||||
polynomial
|
||||
Polynomial tools
|
||||
testing
|
||||
NumPy testing tools
|
||||
distutils
|
||||
Enhancements to distutils with support for
|
||||
Fortran compilers support and more.
|
||||
|
||||
Utilities
|
||||
---------
|
||||
test
|
||||
Run numpy unittests
|
||||
show_config
|
||||
Show numpy build configuration
|
||||
matlib
|
||||
Make everything matrices.
|
||||
__version__
|
||||
NumPy version string
|
||||
|
||||
Viewing documentation using IPython
|
||||
-----------------------------------
|
||||
|
||||
Start IPython and import `numpy` usually under the alias ``np``: `import
|
||||
numpy as np`. Then, directly past or use the ``%cpaste`` magic to paste
|
||||
examples into the shell. To see which functions are available in `numpy`,
|
||||
type ``np.<TAB>`` (where ``<TAB>`` refers to the TAB key), or use
|
||||
``np.*cos*?<ENTER>`` (where ``<ENTER>`` refers to the ENTER key) to narrow
|
||||
down the list. To view the docstring for a function, use
|
||||
``np.cos?<ENTER>`` (to view the docstring) and ``np.cos??<ENTER>`` (to view
|
||||
the source code).
|
||||
|
||||
Copies vs. in-place operation
|
||||
-----------------------------
|
||||
Most of the functions in `numpy` return a copy of the array argument
|
||||
(e.g., `np.sort`). In-place versions of these functions are often
|
||||
available as array methods, i.e. ``x = np.array([1,2,3]); x.sort()``.
|
||||
Exceptions to this rule are documented.
|
||||
|
||||
"""
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
from ._globals import _NoValue, _CopyMode
|
||||
# These exceptions were moved in 1.25 and are hidden from __dir__()
|
||||
from .exceptions import (
|
||||
ComplexWarning, ModuleDeprecationWarning, VisibleDeprecationWarning,
|
||||
TooHardError, AxisError)
|
||||
|
||||
# We first need to detect if we're being called as part of the numpy setup
|
||||
# procedure itself in a reliable manner.
|
||||
try:
|
||||
__NUMPY_SETUP__
|
||||
except NameError:
|
||||
__NUMPY_SETUP__ = False
|
||||
|
||||
if __NUMPY_SETUP__:
|
||||
sys.stderr.write('Running from numpy source directory.\n')
|
||||
else:
|
||||
# Allow distributors to run custom init code before importing numpy.core
|
||||
from . import _distributor_init
|
||||
|
||||
try:
|
||||
from numpy.__config__ import show as show_config
|
||||
except ImportError as e:
|
||||
msg = """Error importing numpy: you should not try to import numpy from
|
||||
its source directory; please exit the numpy source tree, and relaunch
|
||||
your python interpreter from there."""
|
||||
raise ImportError(msg) from e
|
||||
|
||||
__all__ = [
|
||||
'exceptions', 'ModuleDeprecationWarning', 'VisibleDeprecationWarning',
|
||||
'ComplexWarning', 'TooHardError', 'AxisError']
|
||||
|
||||
# mapping of {name: (value, deprecation_msg)}
|
||||
__deprecated_attrs__ = {}
|
||||
|
||||
from . import core
|
||||
from .core import *
|
||||
from . import compat
|
||||
from . import exceptions
|
||||
from . import dtypes
|
||||
from . import lib
|
||||
# NOTE: to be revisited following future namespace cleanup.
|
||||
# See gh-14454 and gh-15672 for discussion.
|
||||
from .lib import *
|
||||
|
||||
from . import linalg
|
||||
from . import fft
|
||||
from . import polynomial
|
||||
from . import random
|
||||
from . import ctypeslib
|
||||
from . import ma
|
||||
from . import matrixlib as _mat
|
||||
from .matrixlib import *
|
||||
|
||||
# Deprecations introduced in NumPy 1.20.0, 2020-06-06
|
||||
import builtins as _builtins
|
||||
|
||||
_msg = (
|
||||
"module 'numpy' has no attribute '{n}'.\n"
|
||||
"`np.{n}` was a deprecated alias for the builtin `{n}`. "
|
||||
"To avoid this error in existing code, use `{n}` by itself. "
|
||||
"Doing this will not modify any behavior and is safe. {extended_msg}\n"
|
||||
"The aliases was originally deprecated in NumPy 1.20; for more "
|
||||
"details and guidance see the original release note at:\n"
|
||||
" https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations")
|
||||
|
||||
_specific_msg = (
|
||||
"If you specifically wanted the numpy scalar type, use `np.{}` here.")
|
||||
|
||||
_int_extended_msg = (
|
||||
"When replacing `np.{}`, you may wish to use e.g. `np.int64` "
|
||||
"or `np.int32` to specify the precision. If you wish to review "
|
||||
"your current use, check the release note link for "
|
||||
"additional information.")
|
||||
|
||||
_type_info = [
|
||||
("object", ""), # The NumPy scalar only exists by name.
|
||||
("bool", _specific_msg.format("bool_")),
|
||||
("float", _specific_msg.format("float64")),
|
||||
("complex", _specific_msg.format("complex128")),
|
||||
("str", _specific_msg.format("str_")),
|
||||
("int", _int_extended_msg.format("int"))]
|
||||
|
||||
__former_attrs__ = {
|
||||
n: _msg.format(n=n, extended_msg=extended_msg)
|
||||
for n, extended_msg in _type_info
|
||||
}
|
||||
|
||||
# Future warning introduced in NumPy 1.24.0, 2022-11-17
|
||||
_msg = (
|
||||
"`np.{n}` is a deprecated alias for `{an}`. (Deprecated NumPy 1.24)")
|
||||
|
||||
# Some of these are awkward (since `np.str` may be preferable in the long
|
||||
# term), but overall the names ending in 0 seem undesirable
|
||||
_type_info = [
|
||||
("bool8", bool_, "np.bool_"),
|
||||
("int0", intp, "np.intp"),
|
||||
("uint0", uintp, "np.uintp"),
|
||||
("str0", str_, "np.str_"),
|
||||
("bytes0", bytes_, "np.bytes_"),
|
||||
("void0", void, "np.void"),
|
||||
("object0", object_,
|
||||
"`np.object0` is a deprecated alias for `np.object_`. "
|
||||
"`object` can be used instead. (Deprecated NumPy 1.24)")]
|
||||
|
||||
# Some of these could be defined right away, but most were aliases to
|
||||
# the Python objects and only removed in NumPy 1.24. Defining them should
|
||||
# probably wait for NumPy 1.26 or 2.0.
|
||||
# When defined, these should possibly not be added to `__all__` to avoid
|
||||
# import with `from numpy import *`.
|
||||
__future_scalars__ = {"bool", "long", "ulong", "str", "bytes", "object"}
|
||||
|
||||
__deprecated_attrs__.update({
|
||||
n: (alias, _msg.format(n=n, an=an)) for n, alias, an in _type_info})
|
||||
|
||||
import math
|
||||
|
||||
__deprecated_attrs__['math'] = (math,
|
||||
"`np.math` is a deprecated alias for the standard library `math` "
|
||||
"module (Deprecated Numpy 1.25). Replace usages of `np.math` with "
|
||||
"`math`")
|
||||
|
||||
del math, _msg, _type_info
|
||||
|
||||
from .core import abs
|
||||
# now that numpy modules are imported, can initialize limits
|
||||
core.getlimits._register_known_types()
|
||||
|
||||
__all__.extend(['__version__', 'show_config'])
|
||||
__all__.extend(core.__all__)
|
||||
__all__.extend(_mat.__all__)
|
||||
__all__.extend(lib.__all__)
|
||||
__all__.extend(['linalg', 'fft', 'random', 'ctypeslib', 'ma'])
|
||||
|
||||
# Remove min and max from __all__ to avoid `from numpy import *` override
|
||||
# the builtins min/max. Temporary fix for 1.25.x/1.26.x, see gh-24229.
|
||||
__all__.remove('min')
|
||||
__all__.remove('max')
|
||||
__all__.remove('round')
|
||||
|
||||
# Remove one of the two occurrences of `issubdtype`, which is exposed as
|
||||
# both `numpy.core.issubdtype` and `numpy.lib.issubdtype`.
|
||||
__all__.remove('issubdtype')
|
||||
|
||||
# These are exported by np.core, but are replaced by the builtins below
|
||||
# remove them to ensure that we don't end up with `np.long == np.int_`,
|
||||
# which would be a breaking change.
|
||||
del long, unicode
|
||||
__all__.remove('long')
|
||||
__all__.remove('unicode')
|
||||
|
||||
# Remove things that are in the numpy.lib but not in the numpy namespace
|
||||
# Note that there is a test (numpy/tests/test_public_api.py:test_numpy_namespace)
|
||||
# that prevents adding more things to the main namespace by accident.
|
||||
# The list below will grow until the `from .lib import *` fixme above is
|
||||
# taken care of
|
||||
__all__.remove('Arrayterator')
|
||||
del Arrayterator
|
||||
|
||||
# These names were removed in NumPy 1.20. For at least one release,
|
||||
# attempts to access these names in the numpy namespace will trigger
|
||||
# a warning, and calling the function will raise an exception.
|
||||
_financial_names = ['fv', 'ipmt', 'irr', 'mirr', 'nper', 'npv', 'pmt',
|
||||
'ppmt', 'pv', 'rate']
|
||||
__expired_functions__ = {
|
||||
name: (f'In accordance with NEP 32, the function {name} was removed '
|
||||
'from NumPy version 1.20. A replacement for this function '
|
||||
'is available in the numpy_financial library: '
|
||||
'https://pypi.org/project/numpy-financial')
|
||||
for name in _financial_names}
|
||||
|
||||
# Filter out Cython harmless warnings
|
||||
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
|
||||
warnings.filterwarnings("ignore", message="numpy.ufunc size changed")
|
||||
warnings.filterwarnings("ignore", message="numpy.ndarray size changed")
|
||||
|
||||
# oldnumeric and numarray were removed in 1.9. In case some packages import
|
||||
# but do not use them, we define them here for backward compatibility.
|
||||
oldnumeric = 'removed'
|
||||
numarray = 'removed'
|
||||
|
||||
def __getattr__(attr):
|
||||
# Warn for expired attributes, and return a dummy function
|
||||
# that always raises an exception.
|
||||
import warnings
|
||||
import math
|
||||
try:
|
||||
msg = __expired_functions__[attr]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
warnings.warn(msg, DeprecationWarning, stacklevel=2)
|
||||
|
||||
def _expired(*args, **kwds):
|
||||
raise RuntimeError(msg)
|
||||
|
||||
return _expired
|
||||
|
||||
# Emit warnings for deprecated attributes
|
||||
try:
|
||||
val, msg = __deprecated_attrs__[attr]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
warnings.warn(msg, DeprecationWarning, stacklevel=2)
|
||||
return val
|
||||
|
||||
if attr in __future_scalars__:
|
||||
# And future warnings for those that will change, but also give
|
||||
# the AttributeError
|
||||
warnings.warn(
|
||||
f"In the future `np.{attr}` will be defined as the "
|
||||
"corresponding NumPy scalar.", FutureWarning, stacklevel=2)
|
||||
|
||||
if attr in __former_attrs__:
|
||||
raise AttributeError(__former_attrs__[attr])
|
||||
|
||||
if attr == 'testing':
|
||||
import numpy.testing as testing
|
||||
return testing
|
||||
elif attr == 'Tester':
|
||||
"Removed in NumPy 1.25.0"
|
||||
raise RuntimeError("Tester was removed in NumPy 1.25.")
|
||||
|
||||
raise AttributeError("module {!r} has no attribute "
|
||||
"{!r}".format(__name__, attr))
|
||||
|
||||
def __dir__():
|
||||
public_symbols = globals().keys() | {'testing'}
|
||||
public_symbols -= {
|
||||
"core", "matrixlib",
|
||||
# These were moved in 1.25 and may be deprecated eventually:
|
||||
"ModuleDeprecationWarning", "VisibleDeprecationWarning",
|
||||
"ComplexWarning", "TooHardError", "AxisError"
|
||||
}
|
||||
return list(public_symbols)
|
||||
|
||||
# Pytest testing
|
||||
from numpy._pytesttester import PytestTester
|
||||
test = PytestTester(__name__)
|
||||
del PytestTester
|
||||
|
||||
def _sanity_check():
|
||||
"""
|
||||
Quick sanity checks for common bugs caused by environment.
|
||||
There are some cases e.g. with wrong BLAS ABI that cause wrong
|
||||
results under specific runtime conditions that are not necessarily
|
||||
achieved during test suite runs, and it is useful to catch those early.
|
||||
|
||||
See https://github.com/numpy/numpy/issues/8577 and other
|
||||
similar bug reports.
|
||||
|
||||
"""
|
||||
try:
|
||||
x = ones(2, dtype=float32)
|
||||
if not abs(x.dot(x) - float32(2.0)) < 1e-5:
|
||||
raise AssertionError()
|
||||
except AssertionError:
|
||||
msg = ("The current Numpy installation ({!r}) fails to "
|
||||
"pass simple sanity checks. This can be caused for example "
|
||||
"by incorrect BLAS library being linked in, or by mixing "
|
||||
"package managers (pip, conda, apt, ...). Search closed "
|
||||
"numpy issues for similar problems.")
|
||||
raise RuntimeError(msg.format(__file__)) from None
|
||||
|
||||
_sanity_check()
|
||||
del _sanity_check
|
||||
|
||||
def _mac_os_check():
|
||||
"""
|
||||
Quick Sanity check for Mac OS look for accelerate build bugs.
|
||||
Testing numpy polyfit calls init_dgelsd(LAPACK)
|
||||
"""
|
||||
try:
|
||||
c = array([3., 2., 1.])
|
||||
x = linspace(0, 2, 5)
|
||||
y = polyval(c, x)
|
||||
_ = polyfit(x, y, 2, cov=True)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
if sys.platform == "darwin":
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
_mac_os_check()
|
||||
# Throw runtime error, if the test failed Check for warning and error_message
|
||||
error_message = ""
|
||||
if len(w) > 0:
|
||||
error_message = "{}: {}".format(w[-1].category.__name__, str(w[-1].message))
|
||||
msg = (
|
||||
"Polyfit sanity test emitted a warning, most likely due "
|
||||
"to using a buggy Accelerate backend."
|
||||
"\nIf you compiled yourself, more information is available at:"
|
||||
"\nhttps://numpy.org/doc/stable/user/building.html#accelerated-blas-lapack-libraries"
|
||||
"\nOtherwise report this to the vendor "
|
||||
"that provided NumPy.\n{}\n".format(error_message))
|
||||
raise RuntimeError(msg)
|
||||
del _mac_os_check
|
||||
|
||||
# We usually use madvise hugepages support, but on some old kernels it
|
||||
# is slow and thus better avoided.
|
||||
# Specifically kernel version 4.6 had a bug fix which probably fixed this:
|
||||
# https://github.com/torvalds/linux/commit/7cf91a98e607c2f935dbcc177d70011e95b8faff
|
||||
import os
|
||||
use_hugepage = os.environ.get("NUMPY_MADVISE_HUGEPAGE", None)
|
||||
if sys.platform == "linux" and use_hugepage is None:
|
||||
# If there is an issue with parsing the kernel version,
|
||||
# set use_hugepages to 0. Usage of LooseVersion will handle
|
||||
# the kernel version parsing better, but avoided since it
|
||||
# will increase the import time. See: #16679 for related discussion.
|
||||
try:
|
||||
use_hugepage = 1
|
||||
kernel_version = os.uname().release.split(".")[:2]
|
||||
kernel_version = tuple(int(v) for v in kernel_version)
|
||||
if kernel_version < (4, 6):
|
||||
use_hugepage = 0
|
||||
except ValueError:
|
||||
use_hugepages = 0
|
||||
elif use_hugepage is None:
|
||||
# This is not Linux, so it should not matter, just enable anyway
|
||||
use_hugepage = 1
|
||||
else:
|
||||
use_hugepage = int(use_hugepage)
|
||||
|
||||
# Note that this will currently only make a difference on Linux
|
||||
core.multiarray._set_madvise_hugepage(use_hugepage)
|
||||
del use_hugepage
|
||||
|
||||
# Give a warning if NumPy is reloaded or imported on a sub-interpreter
|
||||
# We do this from python, since the C-module may not be reloaded and
|
||||
# it is tidier organized.
|
||||
core.multiarray._multiarray_umath._reload_guard()
|
||||
|
||||
# default to "weak" promotion for "NumPy 2".
|
||||
core._set_promotion_state(
|
||||
os.environ.get("NPY_PROMOTION_STATE",
|
||||
"weak" if _using_numpy2_behavior() else "legacy"))
|
||||
|
||||
# Tell PyInstaller where to find hook-numpy.py
|
||||
def _pyinstaller_hooks_dir():
|
||||
from pathlib import Path
|
||||
return [str(Path(__file__).with_name("_pyinstaller").resolve())]
|
||||
|
||||
# Remove symbols imported for internal use
|
||||
del os
|
||||
|
||||
|
||||
# get the version using versioneer
|
||||
from .version import __version__, git_revision as __git_version__
|
||||
|
||||
# Remove symbols imported for internal use
|
||||
del sys, warnings
|
Reference in New Issue
Block a user