# Issue

I have two numpy arrays(A, B) and 2 scalar values(C,D) that I want to store in a csv file. I know how to write a single numpy array in it:

```
A = np.array(...)
np.savetxt('path/to/file/filename.csv', A, delimiter = ",")
```

I want the first two columns of my csv-file to contain the 2 arrays A and B and then have the 2 scalar values C and D as the first entry of columns 3 and 4.

# Solution

I think you must use iterations or other libraries e.g. *Pandas* to do this, because each of the columns will have a different size (* in this example we will handle unequal sizes of A and B*). So the saved array must be specified as

*object*type if you want to do this by

`np.savetxt`

. If you use *object*typed array to be saved by

`np.savetxt`

, it will just fill the first row of the *csv*file:

```
A = np.array([2, 4.1, 5], dtype=np.float64)
B = np.array([2, 7, 9, 1], dtype=np.float64)
C = 1
D = 7
Output = np.zeros((1, 4), dtype=object)
Output[0, :] = A, B, C, D
np.savetxt('Output.csv', Output, delimiter=",", fmt='%s')
```

which will be as:

I don't think if it can be good handled just by NumPy, and will be better to try by other libraries such as Pandas or … or use iterations to open the *csv* file and import in it. But if you want to use NumPy for doing so (*just for figuring out how to do this work by NumPy*), it can be achieved by padding to equalize the arrays' sizes in indirect way. For this aim, we must find maximum length of the `A`

and `B`

to pad the arrays to that length. I filled the padded indices by `np.nan`

in this example and then removed it for the output:

```
max_len = max(A.shape[0], B.shape[0])
A_pad = np.pad(A, (0, max_len - A.shape[0]), constant_values=(np.nan,))
B_pad = np.pad(B, (0, max_len - B.shape[0]), constant_values=(np.nan,))
C_pad = np.pad(np.array([C], dtype=np.float64), (0, max_len - 1), constant_values=(np.nan,))
D_pad = np.pad(np.array([D], dtype=np.float64), (0, max_len - 1), constant_values=(np.nan,))
Output = np.array([A_pad, B_pad, C_pad, D_pad]).T
Output = Output.astype(str)
Output[Output == 'nan'] = ''
np.savetxt('Output.csv', Output, delimiter=",", fmt="%s")
```

Answered By - Ali_Sh Answer Checked By - Senaida (PHPFixing Volunteer)

## 0 Comments:

## Post a Comment

Note: Only a member of this blog may post a comment.