Monkey-patched numpy with pytorch syntax
Project description
numpytorch
Monkey-patched numpy with pytorch syntax.
If you are also tired of dim, axis, keepdim, keepdims, cat, concatenate , or wasted enough time debugging repeat(), meshgrid(), this package provides a dirty solution:
# Just replace the import
#import numpy as np
import numpytorch as np
# use the torch syntax:
x = np.randn(2, 3)
x = x.permute(1, 0).unsqueeze(-1)
x = x.add(1).abs().sin()
# while it won't break the original numpy syntax:
x = np.random.rand(2, 3)
x = np.expand_dims(x.transpose(1, 0), -1)
x = np.sin(np.abs(x + 1))
Features
-
fully compatible with pure
numpycode. -
patched most
pytorchfunctions andTensormethods intonumpyandndarray.
Install
Only Cpython is supported since we use forbiddenfruit to extend the built-in np.ndarray.
pip install numpytorch
Documentations
Since there are conflicted names in numpy and pytorch, such as np.stack() & torch.stack(), ndarray.view() & Tensor.view(), two modes are provided to handle these conflicts: compatible or override.
In the default compatible mode, all of the names in numpy are kept unchanged:
-
If the name is conflicted, we add
torch_{name}to distinguish from the originalnumpymethod.np.torch_stack() arr.torch_view() np.stack() # original numpy stack() arr.view() # original numpy.ndarray view()
-
If the name is not conflicted, we add both
torch_{name}and{name}.np.torch_randn() arr.torch_permute() np.randn() # alias of torch_randn() arr.permute() # alias of torch_permute()
In the override mode, we instead keep the torch functions unchanged and rename numpy functions. {name} & torch_{name} are always added (except some special functions like view(), size), and the conflicted numpy versions are renamed to numpy_{name}. However, this is only experimental and may lead to unexpected bugs since it may break some numpy functions. Use at your own risk!
# 'compatible' mode is invoked by default at import
import numpytorch as np
# invoke override mode
np.set_patch_mode('override')
# invoke compatible mode
np.set_patch_mode('compatible')
# remove all patches
np.set_patch_mode('none')
# list current patches
np.list_patches()
All of the patched functions and methods are listed below. Unless specifically mentioned, they should behave similarly as the torch counterparts.
============== np.* ==============
torch_cat (tensors: Sequence[numpy.ndarray], dim: int = 0, out: Union[numpy.ndarray, NoneType] = None)
cat (tensors: Sequence[numpy.ndarray], dim: int = 0, out: Union[numpy.ndarray, NoneType] = None)
torch_chunk (input: numpy.ndarray, chunks: int, dim: int = 0)
chunk (input: numpy.ndarray, chunks: int, dim: int = 0)
torch_gather (input: numpy.ndarray, dim: int, index: numpy.ndarray, out: Union[numpy.ndarray, NoneType] = None)
gather (input: numpy.ndarray, dim: int, index: numpy.ndarray, out: Union[numpy.ndarray, NoneType] = None)
torch_index_select (input: numpy.ndarray, dim: int, index: numpy.ndarray, out: Union[numpy.ndarray, NoneType] = None)
index_select (input: numpy.ndarray, dim: int, index: numpy.ndarray, out: Union[numpy.ndarray, NoneType] = None)
torch_masked_select (input: numpy.ndarray, mask: numpy.ndarray, out: Union[numpy.ndarray, NoneType] = None)
masked_select (input: numpy.ndarray, mask: numpy.ndarray, out: Union[numpy.ndarray, NoneType] = None)
torch_movedim (input: numpy.ndarray, source: Union[int, Tuple[int]], destination: Union[int, Tuple[int]])
movedim (input: numpy.ndarray, source: Union[int, Tuple[int]], destination: Union[int, Tuple[int]])
torch_swapdims (input: numpy.ndarray, dim0: int, dim1: int)
swapdims (input: numpy.ndarray, dim0: int, dim1: int)
torch_narrow (input: numpy.ndarray, dim: int, start: int, length: int)
narrow (input: numpy.ndarray, dim: int, start: int, length: int)
torch_nonzero (input: numpy.ndarray, as_tuple: bool = False)
torch_scatter (input: numpy.ndarray, dim: int, index: numpy.ndarray, src: numpy.ndarray, reduce: Union[str, NoneType] = None)
scatter (input: numpy.ndarray, dim: int, index: numpy.ndarray, src: numpy.ndarray, reduce: Union[str, NoneType] = None)
torch_scatter_add (input: numpy.ndarray, dim: int, index: numpy.ndarray, src: numpy.ndarray)
scatter_add (input: numpy.ndarray, dim: int, index: numpy.ndarray, src: numpy.ndarray)
torch_split (input: numpy.ndarray, split_size_or_sections: Union[int, Sequence[int]], dim: int = 0)
torch_squeeze (input: numpy.ndarray, dim: Union[int, NoneType] = None)
torch_stack (input: Sequence[numpy.ndarray], dim: int = 0, out: Union[numpy.ndarray, NoneType] = None)
torch_unsqueeze (input: numpy.ndarray, dim: int)
unsqueeze (input: numpy.ndarray, dim: int)
torch_unbind (input: numpy.ndarray, dim: int = 0)
unbind (input: numpy.ndarray, dim: int = 0)
torch_meshgrid (*xi: numpy.ndarray)
torch_clone (input: numpy.ndarray)
clone (input: numpy.ndarray)
torch_is_contiguous (input: numpy.ndarray)
is_contiguous (input: numpy.ndarray)
torch_contiguous (input: numpy.ndarray)
contiguous (input: numpy.ndarray)
torch_repeat (input: numpy.ndarray, *sizes: int)
torch_repeat_interleave (input: numpy.ndarray, repeats: Union[int, numpy.ndarray], dim: Union[int, NoneType] = None)
repeat_interleave (input: numpy.ndarray, repeats: Union[int, numpy.ndarray], dim: Union[int, NoneType] = None)
torch_permute (input: numpy.ndarray, *axes: int)
permute (input: numpy.ndarray, *axes: int)
torch_view (input: numpy.ndarray, *sizes: int)
view (input: numpy.ndarray, *sizes: int)
torch_view_as (input: numpy.ndarray, other: numpy.ndarray)
view_as (input: numpy.ndarray, other: numpy.ndarray)
torch_expand (input: numpy.ndarray, *sizes: int)
Note: the output is read-only since we use np.broadcast_to to return a view of the input, which different from the original behavior of torch.expand().
expand (input: numpy.ndarray, *sizes: int)
torch_expand_as (input: numpy.ndarray, other: numpy.ndarray)
Note: the output is read-only.
expand_as (input: numpy.ndarray, other: numpy.ndarray)
torch_t (input: numpy.ndarray)
t (input: numpy.ndarray)
torch_seed ()
seed ()
torch_manual_seed (seed: int)
manual_seed (seed: int)
torch_rand (*size: int, out: Union[numpy.ndarray, NoneType] = None)
rand (*size: int, out: Union[numpy.ndarray, NoneType] = None)
torch_rand_like (input: numpy.ndarray)
rand_like (input: numpy.ndarray)
torch_randint (low: int, high: Union[int, NoneType] = None, size: Union[Sequence[int], NoneType] = None, out: Union[numpy.ndarray, NoneType] = None)
randint (low: int, high: Union[int, NoneType] = None, size: Union[Sequence[int], NoneType] = None, out: Union[numpy.ndarray, NoneType] = None)
torch_randint_like (input: numpy.ndarray, low: int, high: Union[int, NoneType] = None)
randint_like (input: numpy.ndarray, low: int, high: Union[int, NoneType] = None)
torch_randn (*size: int, out: Union[numpy.ndarray, NoneType] = None)
randn (*size: int, out: Union[numpy.ndarray, NoneType] = None)
torch_randn_like (input: numpy.ndarray)
randn_like (input: numpy.ndarray)
torch_randperm (n: int, out: Union[numpy.ndarray, NoneType] = None)
randperm (n: int, out: Union[numpy.ndarray, NoneType] = None)
torch_clamp (input: numpy.ndarray, min: Union[numbers.Number, numpy.ndarray, NoneType] = None, max: Union[numbers.Number, numpy.ndarray, NoneType] = None)
clamp (input: numpy.ndarray, min: Union[numbers.Number, numpy.ndarray, NoneType] = None, max: Union[numbers.Number, numpy.ndarray, NoneType] = None)
torch_max (input: numpy.ndarray, dim: Union[int, numpy.ndarray, NoneType] = None, keepdim: bool = False, out: Union[numpy.ndarray, NoneType] = None)
max (input: numpy.ndarray, dim: Union[int, numpy.ndarray, NoneType] = None, keepdim: bool = False, out: Union[numpy.ndarray, NoneType] = None)
torch_min (input: numpy.ndarray, dim: Union[int, numpy.ndarray, NoneType] = None, keepdim: bool = False, out: Union[numpy.ndarray, NoneType] = None)
min (input: numpy.ndarray, dim: Union[int, numpy.ndarray, NoneType] = None, keepdim: bool = False, out: Union[numpy.ndarray, NoneType] = None)
torch_flatten (input: numpy.ndarray, start_dim: int = 0, end_dim: int = -1)
flatten (input: numpy.ndarray, start_dim: int = 0, end_dim: int = -1)
========== np.ndarray.* ==========
torch_dim attribute
dim attribute
torch_numel (self)
numel (self)
torch_index_select (input: numpy.ndarray, dim: int, index: numpy.ndarray, out: Union[numpy.ndarray, NoneType] = None)
index_select (input: numpy.ndarray, dim: int, index: numpy.ndarray, out: Union[numpy.ndarray, NoneType] = None)
torch_squeeze_ (input: numpy.ndarray, dim: Union[int, NoneType] = None)
squeeze_ (input: numpy.ndarray, dim: Union[int, NoneType] = None)
torch_unsqueeze (input: numpy.ndarray, dim: int)
unsqueeze (input: numpy.ndarray, dim: int)
torch_unsqueeze_ (input: numpy.ndarray, dim: int)
unsqueeze_ (input: numpy.ndarray, dim: int)
torch_is_contiguous (input: numpy.ndarray)
is_contiguous (input: numpy.ndarray)
torch_contiguous (input: numpy.ndarray)
contiguous (input: numpy.ndarray)
torch_clone (input: numpy.ndarray)
clone (input: numpy.ndarray)
torch_repeat (input: numpy.ndarray, *sizes: int)
torch_repeat_interleave (input: numpy.ndarray, repeats: Union[int, numpy.ndarray], dim: Union[int, NoneType] = None)
repeat_interleave (input: numpy.ndarray, repeats: Union[int, numpy.ndarray], dim: Union[int, NoneType] = None)
torch_view (input: numpy.ndarray, *sizes: int)
torch_permute (input: numpy.ndarray, *axes: int)
permute (input: numpy.ndarray, *axes: int)
torch_expand (input: numpy.ndarray, *sizes: int)
expand (input: numpy.ndarray, *sizes: int)
torch_expand_as (input: numpy.ndarray, other: numpy.ndarray)
expand_as (input: numpy.ndarray, other: numpy.ndarray)
torch_uniform_ (input: numpy.ndarray, fro: int = 0, to: int = 1)
uniform_ (input: numpy.ndarray, fro: int = 0, to: int = 1)
torch_normal_ (input: numpy.ndarray, mean: int = 0, std: int = 1)
normal_ (input: numpy.ndarray, mean: int = 0, std: int = 1)
torch_zero_ (input: numpy.ndarray)
zero_ (input: numpy.ndarray)
torch_clamp (input: numpy.ndarray, min: Union[numbers.Number, numpy.ndarray, NoneType] = None, max: Union[numbers.Number, numpy.ndarray, NoneType] = None)
clamp (input: numpy.ndarray, min: Union[numbers.Number, numpy.ndarray, NoneType] = None, max: Union[numbers.Number, numpy.ndarray, NoneType] = None)
torch_clamp_ (input: numpy.ndarray, min: Union[numbers.Number, numpy.ndarray, NoneType] = None, max: Union[numbers.Number, numpy.ndarray, NoneType] = None)
clamp_ (input: numpy.ndarray, min: Union[numbers.Number, numpy.ndarray, NoneType] = None, max: Union[numbers.Number, numpy.ndarray, NoneType] = None)
torch_clip_ (input: numpy.ndarray, min: Union[numbers.Number, numpy.ndarray, NoneType] = None, max: Union[numbers.Number, numpy.ndarray, NoneType] = None)
clip_ (input: numpy.ndarray, min: Union[numbers.Number, numpy.ndarray, NoneType] = None, max: Union[numbers.Number, numpy.ndarray, NoneType] = None)
torch_flatten (input: numpy.ndarray, start_dim: int = 0, end_dim: int = -1)
torch_max (input: numpy.ndarray, dim: Union[int, numpy.ndarray, NoneType] = None, keepdim: bool = False, out: Union[numpy.ndarray, NoneType] = None)
torch_min (input: numpy.ndarray, dim: Union[int, numpy.ndarray, NoneType] = None, keepdim: bool = False, out: Union[numpy.ndarray, NoneType] = None)
torch_amax (a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
amax (a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
torch_amin (a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
amin (a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
torch_half (self)
half (self)
torch_float (self)
float (self)
torch_double (self)
double (self)
torch_short (self)
short (self)
torch_int (self)
int (self)
torch_long (self)
long (self)
torch_bool (self)
bool (self)
torch_add (self, other)
add (self, other)
torch_add_ (self, other)
add_ (self, other)
torch_subtract (self, other)
subtract (self, other)
torch_subtract_ (self, other)
subtract_ (self, other)
torch_multiply (self, other)
multiply (self, other)
torch_multiply_ (self, other)
multiply_ (self, other)
torch_matmul (self, other)
matmul (self, other)
torch_matmul_ (self, other)
matmul_ (self, other)
torch_divide (self, other)
divide (self, other)
torch_divide_ (self, other)
divide_ (self, other)
torch_true_divide (self, other)
true_divide (self, other)
torch_true_divide_ (self, other)
true_divide_ (self, other)
torch_floor_divide (self, other)
floor_divide (self, other)
torch_floor_divide_ (self, other)
floor_divide_ (self, other)
torch_negative (self)
negative (self)
torch_negative_ (self)
negative_ (self)
torch_positive (self)
positive (self)
torch_positive_ (self)
positive_ (self)
torch_power (self, other)
power (self, other)
torch_power_ (self, other)
power_ (self, other)
torch_float_power (self, other)
float_power (self, other)
torch_float_power_ (self, other)
float_power_ (self, other)
torch_remainder (self, other)
remainder (self, other)
torch_remainder_ (self, other)
remainder_ (self, other)
torch_mod (self, other)
mod (self, other)
torch_mod_ (self, other)
mod_ (self, other)
torch_fmod (self, other)
fmod (self, other)
torch_fmod_ (self, other)
fmod_ (self, other)
torch_divmod (self, other)
divmod (self, other)
torch_divmod_ (self, other)
divmod_ (self, other)
torch_absolute (self)
absolute (self)
torch_absolute_ (self)
absolute_ (self)
torch_abs (self)
abs (self)
torch_abs_ (self)
abs_ (self)
torch_fabs (self)
fabs (self)
torch_fabs_ (self)
fabs_ (self)
torch_sign (self)
sign (self)
torch_sign_ (self)
sign_ (self)
torch_rint (self)
rint (self)
torch_rint_ (self)
rint_ (self)
torch_conj (self)
torch_conj_ (self)
conj_ (self)
torch_exp (self)
exp (self)
torch_exp_ (self)
exp_ (self)
torch_exp2 (self)
exp2 (self)
torch_exp2_ (self)
exp2_ (self)
torch_log (self)
log (self)
torch_log_ (self)
log_ (self)
torch_log2 (self)
log2 (self)
torch_log2_ (self)
log2_ (self)
torch_log10 (self)
log10 (self)
torch_log10_ (self)
log10_ (self)
torch_sqrt (self)
sqrt (self)
torch_sqrt_ (self)
sqrt_ (self)
torch_square (self)
square (self)
torch_square_ (self)
square_ (self)
torch_cbrt (self)
cbrt (self)
torch_cbrt_ (self)
cbrt_ (self)
torch_reciprocal (self)
reciprocal (self)
torch_reciprocal_ (self)
reciprocal_ (self)
torch_gcd (self, other)
gcd (self, other)
torch_gcd_ (self, other)
gcd_ (self, other)
torch_lcm (self, other)
lcm (self, other)
torch_lcm_ (self, other)
lcm_ (self, other)
torch_expm1 (self)
expm1 (self)
torch_expm1_ (self)
expm1_ (self)
torch_log1p (self)
log1p (self)
torch_log1p_ (self)
log1p_ (self)
torch_sin (self)
sin (self)
torch_sin_ (self)
sin_ (self)
torch_cos (self)
cos (self)
torch_cos_ (self)
cos_ (self)
torch_tan (self)
tan (self)
torch_tan_ (self)
tan_ (self)
torch_arcsin (self)
arcsin (self)
torch_arcsin_ (self)
arcsin_ (self)
torch_arccos (self)
arccos (self)
torch_arccos_ (self)
arccos_ (self)
torch_arctan (self)
arctan (self)
torch_arctan_ (self)
arctan_ (self)
torch_arctan2 (self, other)
arctan2 (self, other)
torch_arctan2_ (self, other)
arctan2_ (self, other)
torch_sinh (self)
sinh (self)
torch_sinh_ (self)
sinh_ (self)
torch_cosh (self)
cosh (self)
torch_cosh_ (self)
cosh_ (self)
torch_tanh (self)
tanh (self)
torch_tanh_ (self)
tanh_ (self)
torch_arcsinh (self)
arcsinh (self)
torch_arcsinh_ (self)
arcsinh_ (self)
torch_arccosh (self)
arccosh (self)
torch_arccosh_ (self)
arccosh_ (self)
torch_arctanh (self)
arctanh (self)
torch_arctanh_ (self)
arctanh_ (self)
torch_degrees (self)
degrees (self)
torch_degrees_ (self)
degrees_ (self)
torch_radians (self)
radians (self)
torch_radians_ (self)
radians_ (self)
torch_deg2rad (self)
deg2rad (self)
torch_deg2rad_ (self)
deg2rad_ (self)
torch_rad2deg (self)
rad2deg (self)
torch_rad2deg_ (self)
rad2deg_ (self)
torch_bitwise_and (self, other)
bitwise_and (self, other)
torch_bitwise_and_ (self, other)
bitwise_and_ (self, other)
torch_bitwise_or (self, other)
bitwise_or (self, other)
torch_bitwise_or_ (self, other)
bitwise_or_ (self, other)
torch_bitwise_xor (self, other)
bitwise_xor (self, other)
torch_bitwise_xor_ (self, other)
bitwise_xor_ (self, other)
torch_invert (self)
invert (self)
torch_invert_ (self)
invert_ (self)
torch_left_shift (self, other)
left_shift (self, other)
torch_left_shift_ (self, other)
left_shift_ (self, other)
torch_right_shift (self, other)
right_shift (self, other)
torch_right_shift_ (self, other)
right_shift_ (self, other)
torch_greater (self, other)
greater (self, other)
torch_greater_ (self, other)
greater_ (self, other)
torch_greater_equal (self, other)
greater_equal (self, other)
torch_greater_equal_ (self, other)
greater_equal_ (self, other)
torch_less (self, other)
less (self, other)
torch_less_ (self, other)
less_ (self, other)
torch_less_equal (self, other)
less_equal (self, other)
torch_less_equal_ (self, other)
less_equal_ (self, other)
torch_equal (self, other)
equal (self, other)
torch_equal_ (self, other)
equal_ (self, other)
torch_not_equal (self, other)
not_equal (self, other)
torch_not_equal_ (self, other)
not_equal_ (self, other)
torch_logical_and (self, other)
logical_and (self, other)
torch_logical_and_ (self, other)
logical_and_ (self, other)
torch_logical_or (self, other)
logical_or (self, other)
torch_logical_or_ (self, other)
logical_or_ (self, other)
torch_logical_not (self)
logical_not (self)
torch_logical_not_ (self)
logical_not_ (self)
torch_logical_xor (self, other)
logical_xor (self, other)
torch_logical_xor_ (self, other)
logical_xor_ (self, other)
torch_maximum (self, other)
maximum (self, other)
torch_maximum_ (self, other)
maximum_ (self, other)
torch_minimum (self, other)
minimum (self, other)
torch_minimum_ (self, other)
minimum_ (self, other)
torch_fmax (self, other)
fmax (self, other)
torch_fmax_ (self, other)
fmax_ (self, other)
torch_fmin (self, other)
fmin (self, other)
torch_fmin_ (self, other)
fmin_ (self, other)
torch_nextafter (self, other)
nextafter (self, other)
torch_nextafter_ (self, other)
nextafter_ (self, other)
torch_spacing (self)
spacing (self)
torch_spacing_ (self)
spacing_ (self)
torch_modf (self)
modf (self)
torch_modf_ (self)
modf_ (self)
torch_ldexp (self, other)
ldexp (self, other)
torch_ldexp_ (self, other)
ldexp_ (self, other)
torch_frexp (self)
frexp (self)
torch_frexp_ (self)
frexp_ (self)
torch_isfinite (self)
isfinite (self)
torch_isfinite_ (self)
isfinite_ (self)
torch_isinf (self)
isinf (self)
torch_isinf_ (self)
isinf_ (self)
torch_isnan (self)
isnan (self)
torch_isnan_ (self)
isnan_ (self)
torch_isnat (self)
isnat (self)
torch_isnat_ (self)
isnat_ (self)
torch_signbit (self)
signbit (self)
torch_signbit_ (self)
signbit_ (self)
torch_copysign (self, other)
copysign (self, other)
torch_copysign_ (self, other)
copysign_ (self, other)
torch_floor (self)
floor (self)
torch_floor_ (self)
floor_ (self)
torch_ceil (self)
ceil (self)
torch_ceil_ (self)
ceil_ (self)
torch_trunc (self)
trunc (self)
torch_trunc_ (self)
trunc_ (self)
torch_atan (self)
atan (self)
torch_atan_ (self)
atan_ (self)
torch_asin (self)
asin (self)
torch_asin_ (self)
asin_ (self)
torch_acos (self)
acos (self)
torch_acos_ (self)
acos_ (self)
torch_atan2 (self, other)
atan2 (self, other)
torch_atan2_ (self, other)
atan2_ (self, other)
torch_ge (self, other)
ge (self, other)
torch_ge_ (self, other)
ge_ (self, other)
torch_gt (self, other)
gt (self, other)
torch_gt_ (self, other)
gt_ (self, other)
torch_le (self, other)
le (self, other)
torch_le_ (self, other)
le_ (self, other)
torch_lt (self, other)
lt (self, other)
torch_lt_ (self, other)
lt_ (self, other)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file numpytorch-0.1.2.tar.gz.
File metadata
- Download URL: numpytorch-0.1.2.tar.gz
- Upload date:
- Size: 15.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5dea482beb9a23d53738aff479cc9862eff5cc68d483342036d49f48ad57b388
|
|
| MD5 |
d694c9ea8205480532ad98418a080228
|
|
| BLAKE2b-256 |
6472af8742629ace27dfe9834007c83f4b3d7634ae24adb3501ccb0bf69335e8
|