我正在尝试使用numpy.take()
来获取(如文档所述)沿轴的数组元素。
我的代码:
print np.take(testArray,axis=1)
给出以下反直觉错误:
TypeError: take() takes at least 2 arguments (2 given)
好吧,如果给出两个,那么错在哪里?
为了调试,我打印了形状:
print testArray[:, 1].shape
print testArray[:, 1]
(1L, 4L)
[[ 251 100 4 886271884]]
答案 0 :(得分:2)
这是一个可怕的错误消息,幸运的是它已在Python 3.3及更高版本中得到修复。
它实际意味着该函数至少需要两个 postional 参数,但是您已经给出了一个位置参数和一个关键字参数。您还需要提供一个索引数组作为第二个参数来指定要采用的元素;有关详细信息,请参阅documentation of numpy.take()
。
答案 1 :(得分:0)
正如斯文所提到的,你只提供了一个必需的参数。 axis
参数只是可选的。您需要的第二个参数是要提取的元素索引的python列表:
print(np.take(testArray, list(range(testArray.shape[1])), axis=1))
如果您正在使用python< 3.0,其中range()仍然返回一个列表:
print np.take(testArray, range(testArray.shape[1]), axis=1)