我正在尝试初始化一个大小为(x,y)的NumPy结构化矩阵,其中x的值为~10^3,y的值为~10^6。矩阵的第一列是ID(整数),其余列是三元组(int8),其中三元组的每个成员都应具有不同的默认值。
例如,假设默认值为[2,5,9],我想要初始化以下矩阵:
这里的问题(与this similar question相比)在于每个列都有一个不同的唯一名称应该被记录下来。最快的初始化矩阵的方法是:
什么是初始化这样一个矩阵的最快方式?
谢谢!
例如,假设默认值为[2,5,9],我想要初始化以下矩阵:
0 2 5 9 2 5 9 2 5 9 ...
0 2 5 9 2 5 9 2 5 9 ...
0 2 5 9 2 5 9 2 5 9 ...
0 2 5 9 2 5 9 2 5 9 ...
...
这里的问题(与this similar question相比)在于每个列都有一个不同的唯一名称应该被记录下来。最快的初始化矩阵的方法是:
default_age = 2
default_height = 5
default_shoe_size = 9
columns = ["id",
"a_age",
"a_height",
"a_shoe_size",
"b_age",
"b_height",
"b_shoe_size",
#...
]
y = len(columns)
x = 10**4
# generate matrix
mat = numpy.zeros(shape=x,
dtype={"names" : columns,
"formats" : ['i'] + ['int8'] * (len(columns) - 1)})
# fill the triplets with default values
for i in xrange(y/3):
j = i * 3
mat[mat.dtype.names[j+1]] = default_age
mat[mat.dtype.names[j+2]] = default_height
mat[mat.dtype.names[j+3]] = default_shoe_size
什么是初始化这样一个矩阵的最快方式?
谢谢!
pandas
数据框架吗? - jme(x,len(columns))
),并且该数组的每个元素本身都是具有len(columns)
字段的结构体。您确定这正是您想要的吗?(我猜您真正想要的是一维结构化数组。) - Warren Weckesserx
或y
,并且您的mat[:,i+1]
索引在使用结构化数组时将无法工作。 - hpaulj