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
numpy
code. -
patched most
pytorch
functions andTensor
methods intonumpy
andndarray
.
Install
Only Cpython
is supported since we use forbiddenfruit
to extend the built-in np.ndarray
.
</code></pre>
<h3>Documentations</h3>
<p>Since there are conflicted names in <code>numpy</code> and <code>pytorch</code>, such as <code>np.stack() & torch.stack()</code>, <code>ndarray.view() & Tensor.view()</code>, two modes are provided to handle these conflicts: <code>compatible</code> or <code>override</code>.</p>
<p>In the default <code>compatible</code> mode, all of the names in <code>numpy</code> are kept unchanged:</p>
<ul>
<li>
<p>If the name is conflicted, we add <code>torch_{name}</code> to distinguish from the original <code>numpy</code> method.</p>
<pre lang="python"><code>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)
expand (input: numpy.ndarray, *sizes: int)
torch_expand_as (input: numpy.ndarray, other: numpy.ndarray)
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.0.tar.gz
.
File metadata
- Download URL: numpytorch-0.1.0.tar.gz
- Upload date:
- Size: 14.7 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 | b789db521ce0f2348cbcfcc94a331960728977d06e7017a1b946541ebc7c18c1 |
|
MD5 | 3fae0122a513fbddc99641440bda25c8 |
|
BLAKE2b-256 | 4ea92d922b333ded4aa7457ac6c4fd6769cf1b29c98a9aa26482388286d8cc43 |