2017-04-12 27 views
1

我想分割2d numpy数组到我选择的索引。例如,我有这样的one.csv如何切片列数未知的numpy数组?

111,222,333,444 
1,2,3,4 

我想将它切成例如

XX = array([[ 111., 222., 333.], 
      [ 1., 2., 3.]]) 

YY = array([ 444., 4.]) 

让我们说,我不知道有多少指标都在那里,所以XXYY我做

import numpy 

data = numpy.loadtxt('one.csv', delimiter=",") 


XX = data[:,0:len(data)] 
YY = data[:,len(data)] 

两个XXYY结果如下

# XX 
array([[ 111., 222.], 
     [ 1., 2.]]) 

# YY 
array([ 333., 3.]) 

我该如何解决这个问题?除了使用len(data)之外,还有其他选择吗?

谢谢你的帮助。

+0

但是这里'len(data)'是行数**。 –

+0

您可以从'.shape'属性获得列数:'data.shape [1]'会给你读取的列数 – EdChum

+0

@WillemVanOnsem yes。我刚刚意识到'len(data)'是行数。谢谢您的回答。 @EdChum谢谢你的回答。这对我很有借鉴意义。但是对于这种特殊情况,我想输入文件,从第1行到最后一列进行操作,而不必查找读取的列数。再次感谢你。 =) – Ling

回答

4

为了您的具体的例子,使用此:

# all rows, and all columns but the last 
XX = data[:, 0:-1] 

# all rows and only the last column 
YY = data[:, -1] 

但在一般情况下,你可以得到阵列datadata.shape的形状,并根据需要切片列。

+0

谢谢你的例子。它正在工作! – Ling