我目前正在使用PyTorch框架,并试图了解外部代码。我遇到了索引问题,想打印列表的形状。
这样做的唯一方法(据Google告诉我)是将列表转换为numpy数组,然后使用numpy.ndarray.shape()获得形状。
但是尝试将列表转换为数组时,出现了ValueError: only one element tensors can be converted to Python scalars。
我的列表是经过转换的PyTorch张量(list(pytorchTensor)),看起来像这样:
[张量([[-0.2781,-0.2567,-0.2353,...,-0.9640,-0.9855,-1.0069],
[-0.2781,-0.2567,-0.2353,...,-1.0069,-1.0283,-1.0927 ],
[-0.2567,-0.2567,-0.2138,...,-1.0712,-1.1141,-1.1784],
...,
[-0.6640,-0.6425,-0.6211,...,-1.0712,-1.1141, -1.0927],
[-0.6640,-0.6425,-0.5997,...,-0.9426,-0.9640,-0.9640],
[-0.6640,-0.6425,-0.5997,...,-0.9640,-0.9426,-0.9426 ]]),张量([[--0.0769,-0.0980,-0.076 9,...,-0.9388,-0.9598,-0.9808],
[-0.0559,-0.0769,-0.0980,...,-0.9598,- 1.0018,-1.0228],
[-0.0559,-0.0769,-0.0769,...,-1.0228,-1.0439,-1.0859],
...,
[-0.4973,-0.4973,-0.4973,...,-1.0018,-1.0439,-1.0228],
[-0.4973,-0.4973,-0.4973,...,-0.8757,-0.9177,-0.9177],
[- 0.4973,-0.4973,-0.4973,...,-0.9177,-0.8967,-0.8967]]),张量([[--0.1313,-0.1313,-0.110 0,...,-0.8115,-0.8328,-0.8753 ],
[-0.1313,-0.1525,-0.1313,...,-0.8541,-0.8966,-0.9391],
[-0.1100,-0.1313,-0.1100,...,-0.9391,-0.9816,-1.0666],
...,
[-0.4502,-0.4714,-0.4502,...,-0.8966,-0.8966,-0.8966],
[-0.4502,-0.4714,-0.4502,...,-0.8115,-0.8115,-0.7903 ],
[-0.4502,-0.4714,-0.4502,...,-0.8115,-0.7690,-0.7690]])]]
有没有一种方法可以在不将其转换为numpy数组的情况下获得列表的形状?
我正在使用 numpy 和 argsort,同时遇到argsort 的奇怪(?)行为:
>>> array = [[0, 1, 2, 3, 4, 5],
[444, 4, 8, 3, 1, 10],
[2, 5, 8, 999, 1, 4]]
>>> np.argsort(array, axis=0)
array([[0, 0, 0, 0, 1, 2],
[2, 1, 1, 1, 2, 0],
[1, 2, 2, 2, 0, 1]], dtype=int64)
Run Code Online (Sandbox Code Playgroud)
每个列表的前 4 个值对我来说非常清楚 -argsort正确地完成工作。但最后两个值非常令人困惑,因为它对值的排序有点错误。
的输出不应该argsort是:
array([[0, 0, 0, 0, 2, 1],
[2, 1, 1, 1, 0, 2],
[1, 2, 2, 2, 1, 0]], dtype=int64)
Run Code Online (Sandbox Code Playgroud)