您能否澄清下面代码段中代码[:, :5]
部分的作用?
for i in range(5):
weights = None
test_inputs = testset[i][:, :5]
test_inputs = test_inputs.astype(np.float32)
test_answer = testset[i][:, :5]
test_answer = code_answer(test_answer)
答案 0 :(得分:0)
这在手册的numpy indexing guide中有解释。这不是标准的python语法。
如果你有一个数组a
,a[:]
会在整个数组中返回一个视图(不是副本;分配给它将改变a
); a[:5]
关于元素0, 1, ..., 4
的观点。
numpy
允许使用a[i, j]
而不是纯python版本a[i][j]
索引更多维数组。
这应该涵盖你所有的情况。
答案 1 :(得分:0)
此代码可能使用numpy
数组。
Numpy定义了更精细的数组切片,类似于Matlab风格。
[:, :5]
表示从您的数组(可能是从tester[i]
返回的2D数组)中取出所有行(由:
指定),然后从一开始就采用列直至但不包括第5栏。
切片表达式的每个部分都遵循常规的Python切片语法。
[:, :5]
本身实际上被解释为此[(:, :5)]
,因为在Python中,没有括号的逗号分隔值被解释为元组。
数组对象可以处理表示复杂切片模式的元组。
这就是这种语法的含义。
有关详细信息,您可以访问numpy页面,可以从www.scipy.org开始。
答案 2 :(得分:0)
正如其他人所提到的,被引用的数组来自于 numpy包(见它的主页page)
一个例子应该有所帮助。首先创建一个类似于提供的代码操作的多维数组结构:
from numpy import *
a=arange(36).reshape(6,6)
b=a.reshape(6,3,2).swapaxes(0,2)
print b
[[[0 6 12 18 24 30]
[2 8 14 20 26 32]
[4 10 16 22 28 34]]
[[1 7 13 19 25 31]
[3 9 15 21 27 33]
[5 11 17 23 29 35]]]
[:,:5]语法是一种剔除所有的数组切片机制 超出第五个的组件数组:
print b[1][:,:5]
[[1 7 13 19 25]
[3 9 15 21 27]
[5 11 17 23 29]]