> For the complete documentation index, see [llms.txt](https://pointsource.gitbook.io/crowwrite/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pointsource.gitbook.io/crowwrite/2024/0718.md).

# 0718-np.random.choice

## PYTHON LEARNING

### np.random.choice

The `np.random.choice` function in NumPy is used to generate a random sample from a given 1-D array. It can be used to select random elements from an array, optionally with or without replacement, and can also be used to create an array of specified shape filled with randomly selected values from the input array.

Here's the basic syntax for `np.random.choice`:

```python
numpy.random.choice(a, size=None, replace=True, p=None)
```

### Parameters:

* **a**: 1-D array-like or int
  * If an array-like, a random sample is generated from its elements.
  * If an int, the random sample is generated as if `a` were `np.arange(a)`.
* **size**: int or tuple of ints, optional
  * The output shape. If the given shape is, for example, (m, n, k), then `m * n * k` samples are drawn. Default is None, in which case a single value is returned.
* **replace**: boolean, optional
  * Whether the sample is with or without replacement. Default is True, meaning samples are drawn with replacement.
* **p**: 1-D array-like, optional
  * The probabilities associated with each entry in `a`. If not given, the sample assumes a uniform distribution over all entries in `a`.

### Examples:

1. **Random selection from an array:**

   ```python
   import numpy as np

   array = [1, 2, 3, 4, 5]
   choice = np.random.choice(array)
   print(choice)
   ```
2. **Random selection of multiple elements with replacement:**

   ```python
   import numpy as np

   array = [1, 2, 3, 4, 5]
   choices = np.random.choice(array, size=3)
   print(choices)
   ```
3. **Random selection of multiple elements without replacement:**

   ```python
   import numpy as np

   array = [1, 2, 3, 4, 5]
   choices = np.random.choice(array, size=3, replace=False)
   print(choices)
   ```
4. **Random selection with specified probabilities:**

   ```python
   import numpy as np

   array = [1, 2, 3, 4, 5]
   probabilities = [0.1, 0.2, 0.3, 0.2, 0.2]
   choices = np.random.choice(array, size=3, p=probabilities)
   print(choices)
   ```

This function is quite powerful for creating randomized datasets, performing random sampling, and simulating random processes.
