我不能正确理解Numpy的unique
函数如何在多维数组上工作.更准确地说,我无法理解unique
的文档如何使用axis
参数描述它的操作:
https://numpy.org/doc/stable/reference/generated/numpy.unique.html
当指定轴时,由轴索引的子数组为 已经解决了.This is done by making the specified axis the first dimension of the array (move the axis to the first dimension to keep the order of the other axes),然后按C顺序平整子array.的 然后将展平子数组视为 struct 化类型, 元素给定一个标签,结果是我们最终得到一个一维数组 struct 化类型可以像其他类型一样处理 一维数组结果是,展平的子数组被排序为 从第一个元素开始的词典顺序.
我已多次阅读上述段落,但不幸的是,我未能清楚地了解这一过程,特别是我在上面以黑体字表示的内容.例如,假设我们有下面的二维数组:
import numpy as np
myarray = np.array(
[
[ 1, 3, 7, 8, 3],
[-5, 0, 9, 2, 0],
[10, 11, 12, 85, 11]
]
)
如您所见,包含值{3, 0, 11}
的第2列和第5列是重复的.如果我想使用numpy.unique
删除重复的列,那么我会运行以下命令:
np.unique(myarray, axis=1)
它提供了预期结果:
array([[ 1, 3, 7, 8],
[-5, 0, 9, 2],
[10, 11, 12, 85]])
第5列确实按预期被删除,因为它是(第2列的)重复.所以视觉上,结果是可以理解的.然而,如果我阅读了上面提到的文档,try 按照建议将选定的轴移动为数组的第一个维度,然后将结果子数组展平,我无法理解Numpy是如何精确地拆分和重组数组的 struct 以达到最终结果的.
您能否根据上述文档详细介绍Numpy是如何得出此结果的?