pytutorial/numpy/ravel_unravel/README.md

68 lines
1.2 KiB
Markdown
Raw Permalink Normal View History

# Ravel and UnRavel
{:.no_toc}
<nav markdown="1" class="toc-class">
* TOC
{:toc}
</nav>
## Top
Questions to [David Rotermund](mailto:davrot@uni-bremen.de)
## [numpy.ravel_multi_index](https://numpy.org/doc/stable/reference/generated/numpy.ravel_multi_index.html)
```python
numpy.ravel_multi_index(multi_index, dims, mode='raise', order='C')
```
> Converts a tuple of index arrays into an array of flat indices, applying boundary modes to the multi-index.
```python
import numpy as np
idx = np.ravel_multi_index(([0, 1, 2], [0, 1, 1]), dims=(3, 2))
print(idx) # -> [0 3 5]
a = np.zeros((3, 2))
a.flat[idx] = 1
print(a)
print()
a = np.zeros((3, 2))
a.flat[idx] = np.arange(1, idx.shape[0] + 1)
print(a)
```
Output:
```python
[[1. 0.]
[0. 1.]
[0. 1.]]
[[1. 0.]
[0. 2.]
[0. 3.]]
```
## [numpy.unravel_index](https://numpy.org/doc/stable/reference/generated/numpy.unravel_index.html)
```python
numpy.unravel_index(indices, shape, order='C')
```
> Converts a flat index or array of flat indices into a tuple of coordinate arrays.
```python
import numpy as np
idx = np.ravel_multi_index(([0, 1, 2], [0, 1, 1]), dims=(3, 2))
print(idx) # -> [0 3 5]
a, b = np.unravel_index(idx, shape=(3, 2))
print(a) # -> [0 1 2]
print(b) # -> [0 1 1]
```