Buckets:
| """ | |
| Miscellaneous utils. | |
| """ | |
| from numpy._core import asarray | |
| from numpy._core.numeric import normalize_axis_index, normalize_axis_tuple | |
| from numpy._utils import set_module | |
| __all__ = ["byte_bounds", "normalize_axis_tuple", "normalize_axis_index"] | |
| def byte_bounds(a): | |
| """ | |
| Returns pointers to the end-points of an array. | |
| Parameters | |
| ---------- | |
| a : ndarray | |
| Input array. It must conform to the Python-side of the array | |
| interface. | |
| Returns | |
| ------- | |
| (low, high) : tuple of 2 integers | |
| The first integer is the first byte of the array, the second | |
| integer is just past the last byte of the array. If `a` is not | |
| contiguous it will not use every byte between the (`low`, `high`) | |
| values. | |
| Examples | |
| -------- | |
| >>> import numpy as np | |
| >>> I = np.eye(2, dtype='f'); I.dtype | |
| dtype('float32') | |
| >>> low, high = np.lib.array_utils.byte_bounds(I) | |
| >>> high - low == I.size*I.itemsize | |
| True | |
| >>> I = np.eye(2); I.dtype | |
| dtype('float64') | |
| >>> low, high = np.lib.array_utils.byte_bounds(I) | |
| >>> high - low == I.size*I.itemsize | |
| True | |
| """ | |
| ai = a.__array_interface__ | |
| a_data = ai['data'][0] | |
| astrides = ai['strides'] | |
| ashape = ai['shape'] | |
| bytes_a = asarray(a).dtype.itemsize | |
| a_low = a_high = a_data | |
| if astrides is None: | |
| # contiguous case | |
| a_high += a.size * bytes_a | |
| else: | |
| for shape, stride in zip(ashape, astrides): | |
| if stride < 0: | |
| a_low += (shape - 1) * stride | |
| else: | |
| a_high += (shape - 1) * stride | |
| a_high += bytes_a | |
| return a_low, a_high | |
Xet Storage Details
- Size:
- 1.7 kB
- Xet hash:
- 316507d45c774d69c9cb1e838ed605bb83fb2de656d5d10744a71e6ba259b3ca
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.