【发布时间】:2021-06-03 17:20:56
【问题描述】:
使用 Numpy,我尝试从数据框中的一列创建一个数组。我创建的这个数组,然而,它的大小是 (48,),其中 48 是行数,而不是我预期的 (48,1)。为什么会这样?我认为从 numpy 数据框创建的任何数组都必须具有定义的行数和列数
下面是df代表的相关代码、输出和数据集
y = df.iloc[:, -1]
a=y.shape//Output is (48,)
00 0 1
0 1 0.0 45.0
1 1 0.0 48.0
2 1 0.5 67.0
3 1 1.5 59.5
4 1 1.5 62.4
5 1 1.5 84.4
6 1 1.5 82.0
7 1 1.5 79.5
8 1 3.0 64.8
9 1 3.0 67.4
10 1 3.0 82.6
11 1 3.0 78.2
12 1 3.0 80.4
13 1 3.5 71.3
14 1 3.5 70.5
15 1 3.5 75.0
16 1 3.5 80.9
17 1 3.5 83.2
18 1 4.0 78.4
19 1 4.0 74.2
20 1 4.0 81.5
21 1 4.0 68.9
22 1 4.5 68.3
23 1 4.5 78.5
24 1 4.5 75.9
25 1 4.5 81.6
26 1 4.5 83.2
27 1 4.5 86.1
28 1 4.5 87.4
29 1 5.0 72.8
30 1 5.0 75.0
31 1 5.0 75.6
32 1 5.0 79.3
33 1 5.0 82.4
34 1 5.0 86.3
35 1 5.0 90.2
36 1 5.0 93.4
37 1 5.5 79.5
38 1 5.5 81.4
39 1 5.5 83.2
40 1 5.5 85.7
41 1 5.5 91.4
42 1 5.5 98.5
43 1 5.5 94.3
44 1 6.0 81.2
45 1 6.0 85.4
46 1 6.0 91.0
47 1 6.0 94.3
【问题讨论】:
-
虽然来自整个数据帧的数组是 2d,但来自 Series 的数组是 1d。在
numpy中,像 (48,) 这样的形状比 (48,1) 更常见。当broadcastinga (48,) 可以扩展为 (1,48)。但是很容易将形状更改为 (48,1),例如y[:,None] -
您可以使用
np.reshape()更改数组数据的形状。
标签: python arrays pandas dataframe numpy