## Append to Numpy Array

Appending to a numpy array is a common task in data manipulation and analysis. This article will explore various methods to append data to numpy arrays using the numpy library in Python. We will cover appending elements, rows, and columns, and discuss the performance implications of these operations.

## Introduction to Numpy

Numpy is a fundamental package for scientific computing in Python. It provides support for large, multi-dimensional arrays and matrices, along with a large collection of high-level mathematical functions to operate on these arrays.

### Installing Numpy

Before we dive into appending operations, ensure that numpy is installed in your Python environment:

```
pip install numpy
```

## Basics of Numpy Arrays

Numpy arrays are homogeneous in nature, meaning they consist of elements of the same data type. They are also indexed by tuples of non-negative integers and have a fixed size at creation.

### Creating a Numpy Array

Here is a simple example of how to create a numpy array:

```
import numpy as np
# Creating a numpy array
array = np.array([1, 2, 3])
print(array)
```

Output:

## Appending Elements to a Numpy Array

Appending elements to a numpy array can be done using the `np.append()`

function. This function returns a new array and does not modify the original array.

### Example 1: Appending a Single Element

```
import numpy as np
# Original array
arr = np.array([1, 2, 3])
# Appending an element
new_arr = np.append(arr, 4)
print(new_arr)
```

Output:

### Example 2: Appending Multiple Elements

```
import numpy as np
# Original array
arr = np.array([1, 2, 3])
# Appending multiple elements
new_arr = np.append(arr, [4, 5, 6])
print(new_arr)
```

Output:

## Appending Rows to a Numpy Array

When dealing with multi-dimensional arrays, you might want to add rows to an existing array. This can also be achieved using the `np.append()`

function, but you need to specify the axis parameter.

### Example 3: Appending a Row to a 2D Array

```
import numpy as np
# Original array
arr = np.array([[1, 2, 3], [4, 5, 6]])
# Appending a row
new_row = [7, 8, 9]
new_arr = np.append(arr, [new_row], axis=0)
print(new_arr)
```

Output:

### Example 4: Appending Multiple Rows

```
import numpy as np
# Original array
arr = np.array([[1, 2, 3], [4, 5, 6]])
# Appending multiple rows
new_rows = [[7, 8, 9], [10, 11, 12]]
new_arr = np.append(arr, new_rows, axis=0)
print(new_arr)
```

Output:

## Appending Columns to a Numpy Array

Appending columns is similar to appending rows, but you need to adjust the axis parameter to axis=1.

### Example 5: Appending a Column to a 2D Array

```
import numpy as np
# Original array
arr = np.array([[1, 2, 3], [4, 5, 6]])
# Appending a column
new_col = [7, 8]
new_arr = np.append(arr, [[7], [8]], axis=1)
print(new_arr)
```

Output:

### Example 6: Appending Multiple Columns

```
import numpy as np
# Original array
arr = np.array([[1, 2, 3], [4, 5, 6]])
# Appending multiple columns
new_cols = [[7, 8], [9, 10]]
new_arr = np.append(arr, new_cols, axis=1)
print(new_arr)
```

Output:

## Performance Considerations

Appending operations with numpy arrays can be costly in terms of performance, especially for large arrays. This is because numpy needs to create a new array and copy data from the old array to the new array each time an append operation is performed.

### Example 7: Performance of Appending

```
import numpy as np
import time
# Large array
arr = np.arange(1000000)
# Timing append operation
start_time = time.time()
new_arr = np.append(arr, [1])
end_time = time.time()
print("Time taken to append:", end_time - start_time, "seconds")
```

Output:

## Append to Numpy Array Conclusion

In this article, we explored various ways to append data to numpy arrays. While numpy provides the `np.append()`

function for these operations, it is important to be aware of the performance implications when working with large arrays. For more efficient operations, consider pre-allocating arrays or using different data structures such as lists for append operations before converting them to numpy arrays.

This guide should serve as a comprehensive reference for appending data to numpy arrays using numpy in Python, and help you understand when and how to use these techniques effectively.