Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于列名的子集结构数组_Python_Arrays_Python 2.7_Numpy_Subset - Fatal编程技术网

Python 基于列名的子集结构数组

Python 基于列名的子集结构数组,python,arrays,python-2.7,numpy,subset,Python,Arrays,Python 2.7,Numpy,Subset,我有一个从CSV文件创建的结构化数组 我有许多字段/列。我想创建一个子集数组 z=mydata[['z1','z2','z3']会起作用,但有时z只从z1-z2开始,或者z1-z10 是否有一种简单的方法可以将列名以z开头的所有列子集化,而不管数据中有多少列?显然,生成的数组将有不同的列数,但这很好。不是很漂亮,但您可以执行以下操作: z = mydata[[x for x in a.dtype.names if 'z' in x]] 实际上,您可以遍历所有列名,并检查列名是否符合条件。如果有

我有一个从CSV文件创建的结构化数组

我有许多字段/列。我想创建一个子集数组

z=mydata[['z1','z2','z3']
会起作用,但有时
z
只从
z1-z2
开始,或者
z1-z10


是否有一种简单的方法可以将列名以z开头的所有列子集化,而不管数据中有多少列?显然,生成的数组将有不同的列数,但这很好。

不是很漂亮,但您可以执行以下操作:

z = mydata[[x for x in a.dtype.names if 'z' in x]]

实际上,您可以遍历所有列名,并检查列名是否符合条件。如果有更好的方法,我会非常感兴趣,因为我使用
pd.DataFrame.columns
属性在pandas中执行类似的操作。

您能给我们更多的例子吗?到目前为止,您给我们的信息还不清楚。根据我从CSV读取的数据集,我可能有z1、z2、z3列,但在另一种情况下,可能是z1、z2、z3、z4、z5列。我想创建一个数组z,该数组始终是mydata中以“z”开头的所有列的子集。也就是说,我不必一直更改语句z=mydata[['z1','z2','z3']]或z=mydata[['z1','z2','z3','z4','z5']]等等。这很简单!谢谢大家!@Ophion:对于pandas版本,您可以执行类似于
df.columns.to_series().str.startswith(“Z”)
的操作,但老实说,我经常使用listcomp,因为它更健壮。