Python np.arange在调整大小时创建空值矩阵

Python np.arange在调整大小时创建空值矩阵,python,numpy,Python,Numpy,以下是我正在使用的代码: import numpy as np import pandas as pd from pandas import DataFrame, Series animals = DataFrame(np.arange(16).resize(4, 4), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse']) print(animals) 我得到的结果是: W X

以下是我正在使用的代码:

import numpy as np
import pandas as pd
from pandas import DataFrame, Series
animals = DataFrame(np.arange(16).resize(4, 4), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
我得到的结果是:

         W    X    Y    Z
Dog    NaN  NaN  NaN  NaN
Cat    NaN  NaN  NaN  NaN
Bird   NaN  NaN  NaN  NaN
Mouse  NaN  NaN  NaN  NaN
我期望的结果是:

         W    X    Y    Z
Dog      0    1    2    3
Cat      4    5    6    7
Bird     8    9   10   11
Mouse    12   13   14   15
但是,如果我只运行:

print(np.arange(16))
我得到的结果是:

[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
使用

或使用

使用resize需要将数组作为参数传递

import pandas as pd
animals = pd.DataFrame(np.resize(np.arange(16),(4, 4)), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
将进行就地操作。因此,预先计算大小,然后创建一个数据帧

a=np.arange(16)
a.resize(4,4)
import pandas as pd
animals = pd.DataFrame(a, columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
从文档中可以看到:“更改阵列的形状和大小。” 因此,调用
resize
将返回
None


您需要重塑。正如在
np.arange(16)中一样。重塑(4,4)

只是为了增加上面的答案,对于
调整大小

在适当位置更改阵列的形状和大小

因此,与重塑不同,
resize
不会创建新数组。实际上
np.arange(16).resize(4,4)
会产生
None
,这就是为什么会得到
Nan

使用
重塑
返回一个新数组:

返回包含具有新形状的相同数据的数组

import pandas as pd
animals = pd.DataFrame(np.resize(np.arange(16),(4, 4)), columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
a=np.arange(16)
a.resize(4,4)
import pandas as pd
animals = pd.DataFrame(a, columns=['W', 'X', 'Y', 'Z'], index=['Dog', 'Cat', 'Bird', 'Mouse'])
print(animals)
ndarray.resize(new_shape, refcheck=True)
 ndarray.reshape(shape, order='C')