python中的参数(-1,)是什么意思?

时间:2017-01-04 07:18:20

标签: python numpy

data = np.loadtxt('In_file', dtype=np.float, delimiter=',')

x_test, y_test = np.split(data, (-1, ), axis=1)

我知道这行代码将数据分成两部分,但参数(-1,)是什么意思?

4 个答案:

答案 0 :(得分:2)

索引0上值为-1的元组

答案 1 :(得分:2)

通常在编制索引时,Dim a As String Dim b As String a = "aaa" b = "bbb" a = b ' At this point a and b have the same value of "bbb" a = "xxx" ' At this point I would expect a and b equal to "xxx", however a="xxx" but b="bbb" 表示-1from-the-end是1元素元组。

在这种背景下它的意义有点难以想象,但一个简单的测试使它更清晰:

(-1,)

它拆分数组,最后一个部分是1个元素长。不要被元组符号弄糊涂;它真的期待一个列表,例如In [304]: x=np.arange(10) In [305]: np.split(x, (-1,)) Out[305]: [array([0, 1, 2, 3, 4, 5, 6, 7, 8]), array([9])]

[-1]

我们可以在最后一个数组中拆分3个项目,或者在第一个数组中拆分3个项目。

In [307]: np.split(x, [-1])
Out[307]: [array([0, 1, 2, 3, 4, 5, 6, 7, 8]), array([9])]

或3路分割,第一个包含3个项目,最后一个包含2个:

In [308]: np.split(x, [-3])
Out[308]: [array([0, 1, 2, 3, 4, 5, 6]), array([7, 8, 9])]
In [309]: np.split(x, [3])
Out[309]: [array([0, 1, 2]), array([3, 4, 5, 6, 7, 8, 9])]

最后一次拆分实际上是使用3个索引范围执行的:

In [311]: np.split(x, [3,-2])
Out[311]: [array([0, 1, 2]), array([3, 4, 5, 6, 7]), array([8, 9])]

您的案例是一个二维数组,它正在对列进行拆分。因此,实际上In [313]: x[0:3],x[3:-2],x[-2:] Out[313]: (array([0, 1, 2]), array([3, 4, 5, 6, 7]), array([8, 9])) 是最后一列,其余为y_test

答案 2 :(得分:1)

沿着列轴将数组拆分为元组中的值。 (-1, )会将其分为两部分。

import numpy as np

x = np.arange(9.0).reshape(3,3)
print x,'\n'

a=np.split(x, (-1, ), axis=1)

print a,'\n'
print a[0],'\n'
print a[1],'\n'

输出:

[[ 0.  1.  2.]
 [ 3.  4.  5.]
 [ 6.  7.  8.]] 

[array([[ 0.,  1.],
       [ 3.,  4.],
       [ 6.,  7.]]), array([[ 2.],
       [ 5.],
       [ 8.]])] 

[[ 0.  1.]
 [ 3.  4.]
 [ 6.  7.]] 

[[ 2.]
 [ 5.]
 [ 8.]] 

答案 3 :(得分:0)

numpy.split(ary, indices_or_sections, axis=0)

Indices_or_sections:int或1-D数组 如果indices_or_sections是一个整数N,则该数组将沿轴分成N个相等的数组。如果无法进行此类拆分,则会引发错误。 如果indices_or_sections是排序整数的1-D数组,则条目指示沿轴分割数组的位置。 如果索引超过沿轴的阵列尺寸,则相应地返回空子阵列。 Source documentation