【发布时间】:2019-07-05 15:14:27
【问题描述】:
当在形状(1, X) 的列表上调用numpy.unique 时,例如a = [[1,2]],len(numpy.unique(a)) 返回X,而不是如我所料,1. 一般来说,numpy.unique 似乎将a 视为一维数组..
与此相反,len(numpy.array(a)) 确实返回 1。
这背后的动机是什么?
编辑:python 版本 3.7.3
【问题讨论】:
-
再看看docstring。在
axis的描述中,它说“要操作的轴。如果没有,ar将被展平。” -
哦,我真的错过了这也发生在更通用的二维数组中。现在它更有意义了
-
如果您的问题已解决,请标记正确答案。
-
如果@WarrenWeckesser 将他的评论表述为答案,我会的,因为他是第一个给出“正确答案”的人。仅供参考,我的困惑实际上来自我忽略的另一个奇怪之处:
numpy.unique([[1], [2,3]])似乎没有变平,dtype与我在 2D 列表中只有相同长度的列表不同。这就是为什么我没有认识到扁平化不仅发生在 (1,*) 形状中,而且每当形状是“矩形”时发生 -
kawillzocken,@Akaisteph7 的回答看起来不错,欢迎接受。
标签: python arrays numpy python-3.7