data = np.loadtxt('In_file', dtype=np.float, delimiter=',')
x_test, y_test = np.split(data, (-1, ), axis=1)
我知道这行代码将数据分成两部分,但参数(-1,)是什么意思?
答案 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"
表示-1
。 from-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