如何在不同的索引位置替换数组元素?

时间:2017-05-10 18:20:00

标签: python arrays numpy

假设我有一个5x3且全部为0的数组x = numpy.zeros([5,3])

[[0,0,1],
 [0,1,0],
 [1,0,0],
 [0,1,0],
 [0,0,1]]

我希望能够在每行的不同列索引中用1替换其中一些0。

例如,我正在寻找类似的东西

    public void PollUsers()
    {
        while (true)
        {
            Thread.Sleep(2000);
            lock(users_lock)
            {
                foreach(Socket user_socket in users)
                {
                    if (!IsConnected(user_socket))
                        Console.WriteLine("user disconnected");
                }
            }
        }
    }

    public bool IsConnected(Socket socket)
    {
        try
        {
            return !(socket.Poll(1, SelectMode.SelectRead) && socket.Available == 0);
        }
        catch (SocketException) { return false; }
    }

我所知道的任何花哨的索引技术都会一举取代所有的0,或者在索引选择方面过于僵化。例如,我可以在每一行1到最后两列 - 基本上,我只能替换每行中相同列索引的值,但我想要我更改其列的列索引值因行而异。

1 个答案:

答案 0 :(得分:1)

通过在Index Array中使用Multidimensional array,您可以将索引编入任意位置。

正如评论中提到的,你可以这样做:

x[np.arange(5), [2,1,0,1,2]] = 1