Unexpected behavior in the `DataFrame.from_dict()` with numpy arrays as values
#### Code Sample

```python
import numpy as np
import pandas as pd
import scipy.io

# Two lists
l1 = [1,2]
l2 = [4,5]
# Numpy arrays
a1 = np.array(l1)
a2 = np.array(l2)
# Dictionary of arrays
d = {'a':a1,'b':a2}

# Constructing DataFrame from dictionary
df = pd.DataFrame.from_dict(d,orient='index')
print(df)
```
The above code gives,

```python
 0  1
a  1  2
b  4  5
```
If we change the length of the lists,

```python
# Two lists of unequal length
l1 = [1,2]
l2 = [4,5,6]
<rest code same as above>
```
Then we get,
```python
   0  1    2
a  1  2  NaN
b  4  5  6.0
```
But now if we want to reshape the numpy arrays (for whatever processing needs)
```python
# Two lists of unequal length
l1 = [1,2]
l2 = [4,5,6]

# Numpy arrays with reshape
a1 = np.array(l1).reshape(1,-1)
a2 = np.array(l2).reshape(1,-1)

# Dictionary of arrays
d = {'a':a1,'b':a2}

# Constructing DataFrame from dictionary
df = pd.DataFrame.from_dict(d,orient='index')
print(df)
```
Here we get,
```python
             0
a     [[1, 2]]
b  [[4, 5, 6]]
```
**This is ACCEPTABLE.**
But check what happens if the list lengths are equal,
```python
# Two lists of equal length
l1 = [1,2]
l2 = [4,5]

# Numpy arrays with reshape
a1 = np.array(l1).reshape(1,-1)
a2 = np.array(l2).reshape(1,-1)

# Dictionary of arrays
d = {'a':a1,'b':a2}

# Constructing DataFrame from dictionary
df = pd.DataFrame.from_dict(d,orient='index')
```
We get the error,

```python
ValueError                                Traceback (most recent call last)
<ipython-input-49-b17a697beafc> in <module>()
      1 # Constructing DataFrame from dictionary
----> 2 df = pd.DataFrame.from_dict(d,orient='index')

c:\programdata\miniconda3\lib\site-packages\pandas\core\frame.py in from_dict(cls, data, orient, dtype)
    898             raise ValueError('only recognize index or columns for orient')
    899 
--> 900         return cls(data, index=index, columns=columns, dtype=dtype)
    901 
    902     def to_dict(self, orient='dict', into=dict):

c:\programdata\miniconda3\lib\site-packages\pandas\core\frame.py in __init__(self, data, index, columns, dtype, copy)
    383                 else:
    384                     mgr = self._init_ndarray(data, index, columns, dtype=dtype,
--> 385                                              copy=copy)
    386             else:
    387                 mgr = self._init_dict({}, index, columns, dtype=dtype)

c:\programdata\miniconda3\lib\site-packages\pandas\core\frame.py in _init_ndarray(self, values, index, columns, dtype, copy)
    511         # by definition an array here
    512         # the dtypes will be coerced to a single dtype
--> 513         values = _prep_ndarray(values, copy=copy)
    514 
    515         if dtype is not None:

c:\programdata\miniconda3\lib\site-packages\pandas\core\frame.py in _prep_ndarray(values, copy)
   6255         values = values.reshape((values.shape[0], 1))
   6256     elif values.ndim != 2:
-> 6257         raise ValueError('Must pass 2-d input')
   6258 
   6259     return values

ValueError: Must pass 2-d input
```

#### Problem description
The **`DataFrame.from_dict()` does not work properly when the dictionary contains Numpy arrays as values which have been reshaped**. If the arrays are of unequal length, the DataFrame is created (with a single column) with the arrays as an object. But if they are equal, it throws an unexpected error.

#### Output of ``pd.show_versions()``

<details>

[paste the output of ``pd.show_versions()`` here below this line]

</details>
