From 174449eaeadf19d9fd2e2c6c990408bb7038200f Mon Sep 17 00:00:00 2001
From: David Rotermund <54365609+davrot@users.noreply.github.com>
Date: Fri, 29 Dec 2023 14:53:28 +0100
Subject: [PATCH] Create README.md
Signed-off-by: David Rotermund <54365609+davrot@users.noreply.github.com>
---
numpy/JSON/README.md | 141 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 141 insertions(+)
create mode 100644 numpy/JSON/README.md
diff --git a/numpy/JSON/README.md b/numpy/JSON/README.md
new file mode 100644
index 0000000..0429776
--- /dev/null
+++ b/numpy/JSON/README.md
@@ -0,0 +1,141 @@
+# Numpy <-> JSON over Pandas
+{:.no_toc}
+
+
+
+## The goal
+
+Normally we can not use JSON with Numpy. However, if we use [Pandas](https://pandas.pydata.org/) as an intermediary then we can do it.
+
+Questions to [David Rotermund](mailto:davrot@uni-bremen.de)
+
+**Note: Pandas can also be used for many other formats beside JSON.**
+
+## Writing JSON [pandas.DataFrame.to_json](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_json.html#pandas-dataframe-to-json)
+
+```python
+DataFrame.to_json(path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True, date_unit='ms', default_handler=None, lines=False, compression='infer', index=None, indent=None, storage_options=None, mode='w')[source]
+```
+
+> Convert the object to a JSON string.
+>
+> Note NaN’s and None will be converted to null and datetime objects will be converted to UNIX timestamps.
+
+```python
+import numpy as np
+import pandas as pd
+
+rng = np.random.default_rng()
+
+some_data = rng.random((11, 3))
+
+df = pd.DataFrame(some_data)
+# As file
+filename = "mynumpydata.json"
+df.to_json(filename, orient="index")
+
+# As string
+output = df.to_json(orient="index")
+print(output)
+```
+
+Output (reformated):
+
+```python
+{
+ "0": {
+ "0": 0.3145859169,
+ "1": 0.2517001569,
+ "2": 0.6685086575
+ },
+ "1": {
+ "0": 0.7324177066,
+ "1": 0.6750562092,
+ "2": 0.0086333192
+ },
+ "2": {
+ "0": 0.7529914827,
+ "1": 0.3597052352,
+ "2": 0.2780062722
+ },
+ "3": {
+ "0": 0.2847410336,
+ "1": 0.5572451873,
+ "2": 0.5591149362
+ },
+ "4": {
+ "0": 0.4507115703,
+ "1": 0.9623511422,
+ "2": 0.7180796014
+ },
+ "5": {
+ "0": 0.5406601852,
+ "1": 0.9315847158,
+ "2": 0.2456480951
+ },
+ "6": {
+ "0": 0.3441382077,
+ "1": 0.4714817658,
+ "2": 0.1777388975
+ },
+ "7": {
+ "0": 0.6994839505,
+ "1": 0.6520935819,
+ "2": 0.9870686976
+ },
+ "8": {
+ "0": 0.187576403,
+ "1": 0.7466669157,
+ "2": 0.2952841542
+ },
+ "9": {
+ "0": 0.9140410582,
+ "1": 0.6828387334,
+ "2": 0.165762789
+ },
+ "10": {
+ "0": 0.644055269,
+ "1": 0.6122094952,
+ "2": 0.9695111468
+ }
+}
+```
+
+## Read JSON [pandas.read_json](https://pandas.pydata.org/docs/reference/api/pandas.read_json.html#pandas-read-json)
+
+```python
+pandas.read_json(path_or_buf, *, orient=None, typ='frame', dtype=None, convert_axes=None, convert_dates=True, keep_default_dates=True, precise_float=False, date_unit=None, encoding=None, encoding_errors='strict', lines=False, chunksize=None, compression='infer', nrows=None, storage_options=None, dtype_backend=_NoDefault.no_default, engine='ujson')[source]
+```
+
+> Convert a JSON string to pandas object.
+
+```python
+import numpy as np
+import pandas as pd
+
+filename = "mynumpydata.json"
+df = pd.read_json(filename, orient="index")
+output_np = df.to_numpy()
+print(type(output_np)) # ->
+print(output_np)
+```
+
+Output:
+
+```python
+[[0.31458592 0.25170016 0.66850866]
+ [0.73241771 0.67505621 0.00863332]
+ [0.75299148 0.35970524 0.27800627]
+ [0.28474103 0.55724519 0.55911494]
+ [0.45071157 0.96235114 0.7180796 ]
+ [0.54066019 0.93158472 0.2456481 ]
+ [0.34413821 0.47148177 0.1777389 ]
+ [0.69948395 0.65209358 0.9870687 ]
+ [0.1875764 0.74666692 0.29528415]
+ [0.91404106 0.68283873 0.16576279]
+ [0.64405527 0.6122095 0.96951115]]
+```
+