pytutorial/numpy/new_matrix/README.md
David Rotermund a7ad2bef63
Update README.md
Signed-off-by: David Rotermund <54365609+davrot@users.noreply.github.com>
2023-12-13 16:42:45 +01:00

165 lines
4.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# New matrices
{:.no_toc}
<nav markdown="1" class="toc-class">
* TOC
{:toc}
</nav>
## The goal
Making a new matrix...
Questions to [David Rotermund](mailto:davrot@uni-bremen.de)
Using **import numpy as np** is the standard.
## Simple example -- new [np.zeros()](https://numpy.org/doc/stable/reference/generated/numpy.zeros.html)
Define the size of your new matrix with a tuple, e.g.
```python
M = numpy.zeros((DIM_0, DIM_1, DIM_2, ))
```
### 1d
```python
import numpy as np
M = np.zeros((2))
print(M)
```
Output:
```python
[0. 0.]
```
### 2d
```python
import numpy as np
M = np.zeros((2, 3))
print(M)
```
Output:
```python
[[0. 0. 0.]
[0. 0. 0.]]
```
### 3d
```python
import numpy as np
M = np.zeros((2, 3, 4))
print(M)
```
Output:
```python
[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]
```
## Simple example -- recycle [np.zeros_like()](https://numpy.org/doc/stable/reference/generated/numpy.zeros_like.html)
If you have a matrix with the same size you want then you can use zeros_like. This will also copy other properties like the data type.
as a prototype use
N = numpy.zeros_like(M)
```python
import numpy as np
M = np.zeros((2, 3, 4))
N = np.zeros_like(M)
print(N)
```
Output:
```python
[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]
```
## Remember unpacking
{: .topic-optional}
This is an optional topic!
```python
import numpy as np
d = (3, 4)
M = np.zeros((2, *d))
print(M)
```
## np.empty is not np.zeros
If you are sure that you dont care about what is inside the matrix in the beginning use
```python
M = numpy.empty((DIM_0, DIM_1, DIM_2,...))
```
Empty claims a region in the memory and uses it for a matrix. Zeros goes one step further. It fills the memory with zeros.
Thus random junk (i.e. data that was stored prior at that memory position) with be the content of a matrix if you use empty. However, np.empty() is faster than np.zeros().
```python
import numpy as np
M = np.empty((10, 4))
print(M)
```
```python
[[1.66706425e-316 0.00000000e+000 6.89933729e-310 6.89933730e-310]
[6.89933729e-310 6.89933730e-310 6.89933729e-310 6.89933730e-310]
[6.89933730e-310 6.89933730e-310 6.89933729e-310 6.89933729e-310]
[6.89933730e-310 6.89933729e-310 6.89933730e-310 6.89933729e-310]
[6.89933730e-310 4.30513389e-317 4.30321296e-317 6.89933825e-310]
[4.30389280e-317 6.89933822e-310 4.30366750e-317 6.89933822e-310]
[4.30311810e-317 4.30480583e-317 4.30462401e-317 4.30336316e-317]
[6.89933822e-310 4.30386513e-317 4.30358055e-317 4.30571886e-317]
[4.30568724e-317 4.30659237e-317 6.89933822e-310 6.89933822e-310]
[6.89933822e-310 6.89933822e-310 4.30289676e-317 6.89920336e-310]]
```
## [From shape or value](https://numpy.org/doc/stable/reference/routines.array-creation.html#from-shape-or-value)
|||
|---|---|
|[empty](https://numpy.org/doc/stable/reference/generated/numpy.empty.html#numpy.empty)(shape[, dtype, order, like])|Return a new array of given shape and type, without initializing entries.|
|[empty_like](https://numpy.org/doc/stable/reference/generated/numpy.empty_like.html#numpy.empty_like)(prototype[, dtype, order, subok, ...])|Return a new array with the same shape and type as a given array.|
|[eye](https://numpy.org/doc/stable/reference/generated/numpy.eye.html#numpy.eye)(N[, M, k, dtype, order, like])|Return a 2-D array with ones on the diagonal and zeros elsewhere.|
|[identity](https://numpy.org/doc/stable/reference/generated/numpy.identity.html#numpy.identity)(n[, dtype, like])|Return the identity array.|
|[ones](https://numpy.org/doc/stable/reference/generated/numpy.ones.html#numpy.ones)(shape[, dtype, order, like])|Return a new array of given shape and type, filled with ones.|
|[ones_like](https://numpy.org/doc/stable/reference/generated/numpy.ones_like.html#numpy.ones_like)(a[, dtype, order, subok, shape])|Return an array of ones with the same shape and type as a given array.|
|[zeros](https://numpy.org/doc/stable/reference/generated/numpy.zeros.html#numpy.zeros)(shape[, dtype, order, like])|Return a new array of given shape and type, filled with zeros.|
|[zeros_like](https://numpy.org/doc/stable/reference/generated/numpy.zeros_like.html#numpy.zeros_like)(a[, dtype, order, subok, shape])|Return an array of zeros with the same shape and type as a given array.|
|[full](https://numpy.org/doc/stable/reference/generated/numpy.full.html#numpy.full)(shape, fill_value[, dtype, order, like])|Return a new array of given shape and type, filled with fill_value.|
|[full_like](https://numpy.org/doc/stable/reference/generated/numpy.full_like.html#numpy.full_like)(a, fill_value[, dtype, order, ...])|Return a full array with the same shape and type as a given array.|