【问题标题】:length of numpy.unique on a 2D list of shape (1,*)二维形状列表上 numpy.unique 的长度 (1,*)
【发布时间】: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


【解决方案1】:

你得到的答案是因为数组被展平了。而[1,2]的长度确实是2。我相信这样做的原因只是为了给用户最大的灵活性。

您正在寻找的可以通过这样做来实现:

len(np.unique(a, axis=0))

【讨论】:

    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多