在设置名称时,使用numpy.ones创建了意外的大型数组

时间:2014-11-23 07:47:14

标签: python numpy

我尝试使用numpy

下面的代码获取10 x 8 array
import numpy as np
columns = ["Port Wt", "Bench Wt", "Port Retn", 
               "Bench Retn", "Attrib", "Select", "Inter", "Total"]
a = np.ones([10,len(columns)], 
               dtype={"names":columns, "formats":["f8"]*len(columns)})

我是numpy的新手,我得到了意想不到的行为 - 我得到的是10 x 8 x 8 grid

我试过

a.dtype.names = columns

并获得ValueError: there are no fields defined

我做错了什么?如何根据需要获得10 x 8网格名称?

由于

1 个答案:

答案 0 :(得分:1)

您的代码确实生成了10 x 8数组,即a.shape == (10, 8)。但是,数组中的每个元素都有8个字段,总共添加10 x 8 x 8个字段。

所以你可能想要的是一个形状为(10,)的数组,每个元素有8个字段:

a = np.ones((10,), dtype={"names":columns, "formats":["f8"]*len(columns)})