在Python中排序索引

发布于 2025-02-11 17:13:41 字数 1104 浏览 0 评论 0原文

我有一个数组i1。我想按增加j顺序排列索引。例如,在[0,1]i = 0,j = 1中。但是我有一个错误。预期的输出已附加。

import numpy as np

I1=np.array([[[0, 1],
        [0, 3],
        [1, 2],
        [1, 4],
        [2, 5],
        [3, 4],
        [3, 6],
        [4, 7],
        [5, 4],
        [6, 7]],

        [[0, 1],
        [0, 3],
        [1, 2],
        [1, 4],
        [2, 5],
        [3, 4],
        [3, 6],
        [4, 7]]])  

order1 = I1[0,:, 1].argsort()
I10 =np.array([I1[0][order1]])
print("I10 =",[I10])

错误是

in <module>
order1 = I1[0,:, 1].argsort()

IndexError: too many indices for array: array is 1-dimensional, but 3 were indexed

预期的输出是:

array([[[0, 1],
        [1, 2],
        [0, 3],
        [1, 4],
        [3, 4],
        [5, 4],
        [2, 5],
        [3, 6],
        [4, 7],
        [6, 7]],
       
        [[0, 1],
        [1, 2],
        [0, 3],
        [1, 4],
        [3, 4],
        [2, 5],
        [3, 6],
        [4, 7]]])

I have an array I1. I want to arrange the indices in order of increasing j. For example, in [0, 1], i=0,j=1. But I am getting an error. The expected output is attached.

import numpy as np

I1=np.array([[[0, 1],
        [0, 3],
        [1, 2],
        [1, 4],
        [2, 5],
        [3, 4],
        [3, 6],
        [4, 7],
        [5, 4],
        [6, 7]],

        [[0, 1],
        [0, 3],
        [1, 2],
        [1, 4],
        [2, 5],
        [3, 4],
        [3, 6],
        [4, 7]]])  

order1 = I1[0,:, 1].argsort()
I10 =np.array([I1[0][order1]])
print("I10 =",[I10])

The error is

in <module>
order1 = I1[0,:, 1].argsort()

IndexError: too many indices for array: array is 1-dimensional, but 3 were indexed

The expected output is:

array([[[0, 1],
        [1, 2],
        [0, 3],
        [1, 4],
        [3, 4],
        [5, 4],
        [2, 5],
        [3, 6],
        [4, 7],
        [6, 7]],
       
        [[0, 1],
        [1, 2],
        [0, 3],
        [1, 4],
        [3, 4],
        [2, 5],
        [3, 6],
        [4, 7]]])

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

静谧幽蓝 2025-02-18 17:13:41

您需要使用 sorted() python内置功能:

import numpy as np

I1=np.array([[[0, 1],
        [0, 3],
        [1, 2],
        [1, 4],
        [2, 5],
        [3, 4],
        [3, 6],
        [4, 7],
        [5, 4],
        [6, 7]],
                [[0, 1],
                  [0, 3],
                  [1, 2],
                  [1, 4],
                  [2, 5],
                  [3, 4],
                  [3, 6],
                  [4, 7]]])  
I1 = np.array([sorted(i, key = lambda x : x[1]) for i in I1])
print(I1)

输出:

[list([[0, 1], [1, 2], [0, 3], [1, 4], [3, 4], [5, 4], [2, 5], [3, 6], [4, 7], [6, 7]])
 list([[0, 1], [1, 2], [0, 3], [1, 4], [3, 4], [2, 5], [3, 6], [4, 7]])]

You need to use the key parameter of sorted() Python built-in function:

import numpy as np

I1=np.array([[[0, 1],
        [0, 3],
        [1, 2],
        [1, 4],
        [2, 5],
        [3, 4],
        [3, 6],
        [4, 7],
        [5, 4],
        [6, 7]],
                [[0, 1],
                  [0, 3],
                  [1, 2],
                  [1, 4],
                  [2, 5],
                  [3, 4],
                  [3, 6],
                  [4, 7]]])  
I1 = np.array([sorted(i, key = lambda x : x[1]) for i in I1])
print(I1)

Output:

[list([[0, 1], [1, 2], [0, 3], [1, 4], [3, 4], [5, 4], [2, 5], [3, 6], [4, 7], [6, 7]])
 list([[0, 1], [1, 2], [0, 3], [1, 4], [3, 4], [2, 5], [3, 6], [4, 7]])]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文