# NumPy - Array from Existing Data

The NumPy package contains a number of functions which can be used to create an array from an existing data. Below mentioned are most commonly used functions for this purpose:

FunctionDescription
asarray() Converts the input to an array.
frombuffer() Interpret a buffer as a 1-dimensional array.
fromiter() Create a new 1-dimensional array from an iterable object.

Lets discuss these functions in detail:

## numpy.asarray() function

The numpy.asarray() function is used to convert the input to an array. The syntax for using this function is given below:

### Syntax

```numpy.asarray(a, dtype=None, order=None)
```

### Parameters

 `a` `Required. `Specify the input data, in any form that can be converted to an array. This includes lists, lists of tuples, tuples, tuples of tuples, tuples of lists and ndarrays. `dtype` `Optional. `Specify the desired data type. By default, the data-type is inferred from the input data. `order` `Optional. `Specify whether to store the result. Two possible values are: C (C-style) and F (Fortran-style). Default: 'C'

### Example:

In the example below, the function is used to create a numpy array from an existing data.

```import numpy as np

x1 = [10, 20, 30, 40, 50, 60]
x2 = (100, 200, 300)
x3 = [[10, 20, 30], [40, 50, 60]]

#creating numpy array from a list
Arr1 = np.asarray(x1)
print("Arr1 is:", Arr1)

#creating numpy array from a tuple
Arr2 = np.asarray(x2, dtype=float)
print("\nArr2 is:", Arr2)

#creating numpy array from a list of list
Arr3 = np.asarray(x3)
print("\nArr3 is:\n", Arr3)
```

The output of the above code will be:

```Arr1 is: [10 20 30 40 50 60]

Arr2 is: [100. 200. 300.]

Arr3 is:
[[10 20 30]
[40 50 60]]
```

## numpy.frombuffer() function

The numpy.frombuffer() function is used to interpret a buffer as a 1-dimensional array. The syntax for using this function is given below:

### Syntax

```numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
```

### Parameters

 `buffer` `Required. `Specify an object that exposes the buffer interface. `dtype` `Optional. `Specify the desired data type. Default is float. `count` `Optional. `Specify the number of items to read. Default is -1 which means all data in the buffer. `offset` `Optional. `Start reading the buffer from this offset (in bytes). Default is 0.

### Example:

In the example below, the frombuffer() function is used to create a numpy array from a buffer.

```import numpy as np

x = b"Hello World"

#creating 1-D numpy array from buffer
Arr1 = np.frombuffer(x, dtype='S1')
print("Arr1 is:", Arr1)

#using count parameter
Arr2 = np.frombuffer(x, dtype='S1', count=5)
print("\nArr2 is:", Arr2)

#using count and offset parameter
Arr3 = np.frombuffer(x, dtype='S1', count=5, offset=6)
print("\nArr3 is:", Arr3)
```

The output of the above code will be:

```Arr1 is: [b'H' b'e' b'l' b'l' b'o' b' ' b'W' b'o' b'r' b'l' b'd']

Arr2 is: [b'H' b'e' b'l' b'l' b'o']

Arr3 is: [b'W' b'o' b'r' b'l' b'd']
```

## numpy.fromiter() function

The numpy.fromiter() function is used to create a new 1-dimensional array from an iterable object.

### Syntax

```numpy.fromiter(iterable, dtype, count=-1)
```

### Parameters

 `iterable` `Required. `Specify an iterable object providing data for the array. `dtype` `Required. `Specify the desired data type of returned array. `count` `Optional. `Specify the number of items to read from iterable. The default is -1, which means all data is read.

### Example:

In the example below, the fromiter() function is used to create a numpy array from an iterable object.

```import numpy as np

it = (x*x for x in range(5))

#creating numpy array from an iterable
Arr = np.fromiter(it, dtype=float)
print(Arr)
```

The output of the above code will be:

```[ 0.  1.  4.  9. 16.]
```

5