numpy.reshape version1.18.x : ValueError: Non-string object detected for the array ordering. Please pass in 'C', 'F', 'A', or 'K' instead エラー

# 背景
numpyのVersion1.17.2から1.18.1へのの変更で、**np.reshape(a, size, 1)**で異常が出て通らなくなった。
>**Version1.17.2 OK  ⇒  1.18.1  NG**
>>**np.reshape(a,size,1)**  ← エラー発生
**ValueError: Non-string object detected for the array ordering. Please pass in 'C', 'F', 'A', or 'K' instead**
**np.reshape(a,size,order="F")**  ←修正後エラー無し（**正しく文法**に従って記述）

>>>0 ⇒ order = "C"
1 ⇒ order = "F"


#### 原因
**Version18**あたりから**orderで簡単に(0 or 1)**を使用する事が出来なくなった（完全に禁止？）と想定。
##参考

>[numpy.matrix.flatten](https://numpy.org/devdocs/reference/generated/numpy.matrix.flatten.html)
マトリクスのFlattenに関する情報(20120312)
[配列を形状変換するNumPyのreshapeの使い方](https://deepage.net/features/numpy-reshape.html)
numpy.reshape(a, newshape, order=’C’)に関する説明(20170524)

## 【1】 numpy version 1.17.2　正しくフラット化が出来ていたが！！
2020年3月
まず、3x3の配列を作成して、その後に**a**を**行方向**のベクトルに変更する。

```python
import numpy as np
a=np.arange(9).reshape((3,3))
print(a);
```
>[[0 1 2]
 [3 4 5]
 [6 7 8]]

```python
"""version1.17.2"""
print(np.reshape(a,9,1))
print(np.reshape(a,9,0))
```

>**[0 3 6 1 4 7 2 5 8]**　OK　1：列優先でのフラット化
**[0 1 2 3 4 5 6 7 8]**　OK　0：行優先でのフラット化

1が列優先、0が行優先

## 【2】numpy version 1.18.1 ではコードを変えないとダメ

### 古いコードだとエラー
```python
"""version1.18.1"""
print(np.reshape(a,9,1))  #エラー
print(np.reshape(a,9,0))  #エラー
```

### 正しく記載するとOK

```python
"""version1.18.1"""
print(np.reshape(a,9,order="C"))  # OK
print(np.reshape(a,9,order="F"))  # OK
print(np.reshape(a,9,order="A"))  # OK
print(np.reshape(a,9,order="K"))  # order "K" is note permitted for reshaping
```

>[0 1 2 3 4 5 6 7 8]　　　#行方向優先 (C Style)：defalut
[0 3 6 1 4 7 2 5 8]　　　#列方向優先 (Fortran Style)
[0 1 2 3 4 5 6 7 8]　　　#行方向優先（A: Fortran条件付きで列優先、それ以外は行）
エラー


##### (参考)エラー警告

```python
ValueError                                Traceback (most recent call last)
<ipython-input-9-606680189191> in <module>
      2 a=np.arange(9).reshape((3,3))
      3 print(a)
----> 4 print(np.reshape(a,9,1))
<__array_function__ internals> in reshape(*args, **kwargs)
~/.pyenv/versions/anaconda3-2019.10/envs/tf20200320/lib/python3.7/site-packages/\
              numpy/core/fromnumeric.py in reshape(a, newshape, order)
--> 301     return _wrapfunc(a, 'reshape', newshape, order=order)
|
ValueError: Non-string object detected for the array ordering. Please pass in 'C', 'F', 'A', or 'K' instead
```
##【3】 Version間での比較

######Version1.17.2

```python
"""numpy Version1.17.2"""
import numpy as np
a=np.arange(9).reshape((3,3))
b=np.size(a) 
print(a)                             # 3x3
print(b)                             # 9 
print("0,1を記載")
print(np.reshape(a,9,0))             #[0 1 2 3 4 5 6 7 8] 行優先             
print(np.reshape(a,9,1))             #[0 3 6 1 4 7 2 5 8] 列
print(np.reshape(a,b,1))             #[0 3 6 1 4 7 2 5 8] 列
print(np.reshape(a,np.size(a),1))    #[0 3 6 1 4 7 2 5 8] 列
print("")
print(np.reshape(a,(1,9),1))         #[0 3 6 1 4 7 2 5 8] 列
print(np.reshape(a,[1,9],1))         #[0 3 6 1 4 7 2 5 8] 列　
print("")
print("order記載")
print(np.reshape(a,9,order="C"))     #[0 1 2 3 4 5 6 7 8] 行優先
print(np.reshape(a,9,order="F"))     #[0 3 6 1 4 7 2 5 8] 列
"""全てOK"""
```

######Version1.18.1

```python
"""numpy Version1.18.1"""
import numpy as np
a=np.arange(9).reshape((3,3))
b=np.size(a) 
print(a)                             # 3x3
print(b)                             # 9 
print("0,1を記載")
print(np.reshape(a,9,0))             #エラー
print(np.reshape(a,9,1))             #エラー
print(np.reshape(a,b,1))             #エラー
print(np.reshape(a,np.size(a),1))    #エラー
print("")
print(np.reshape(a,(1,9),1))         #エラー
print(np.reshape(a,[1,9],1))         #エラー
print("")
print("order記載")
print(np.reshape(a,9,order="C"))     #[0 1 2 3 4 5 6 7 8] 行優先
print(np.reshape(a,9,order="F"))     #[0 3 6 1 4 7 2 5 8] 列
"""全てOK"""
```

## 【4】 記述の説明

```nympy
np.ndarray.flatten?
```

```python
Docstring:
a.flatten(order='C')

Return a copy of the array collapsed into one dimension.

Parameters
----------
order : {'C', 'F', 'A', 'K'}, optional
    'C' means to flatten in row-major (C-style) order.
    'F' means to flatten in column-major (Fortran-
    style) order. 'A' means to flatten in column-major
    order if `a` is Fortran *contiguous* in memory,
    row-major order otherwise. 'K' means to flatten
    `a` in the order the elements occur in memory.
    The default is 'C'.
```


##### 参考資料
[numpy.matrix.flatten](https://numpy.org/devdocs/reference/generated/numpy.matrix.flatten.html)