Py学习  »  Python

Python-将numpy数组中的值移动到底部

Adan • 3 年前 • 1521 次点击  

我有一个numpy数组,看起来像这样:

可以通过更改“row_num”和“col_num”变量来更改大小

[[0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0.]]

在程序中,阵列可能如下所示:

[[0. 0. 0. 0. 0. 0. 0.]
 [2. 2. 2. 0. 2. 0. 0.]
 [1. 1. 1. 0. 1. 0. 0.]
 [2. 2. 2. 0. 2. 0. 0.]
 [1. 1. 2. 0. 2. 0. 0.]
 [2. 2. 0. 0. 0. 0. 0.]
 [1. 1. 0. 0. 0. 1. 0.]]

我想做一个函数,让数字向下移动,就像重力一样。因此,一旦函数运行,数组将如下所示:

[[0. 0. 0. 0. 0. 0. 0.]
 [2. 2. 0. 0. 0. 0. 0.]
 [1. 1. 0. 0. 0. 0. 0.]
 [2. 2. 2. 0. 2. 0. 0.]
 [1. 1. 1. 0. 1. 0. 0.]
 [2. 2. 2. 0. 2. 0. 0.]
 [1. 1. 2. 0. 2. 1. 0.]]

目前,我的函数中的代码如下所示:

    for cols in range(col_num):
    for rows in range(row_num-1):

        if board[rows][cols] == 0 and board[rows+1][cols] == 1:
            board[rows+1][cols] = 0
            board[rows][cols] = 1
            print('move down 1')
        elif board[rows][cols] == 0 and board[rows+1][cols] == 2:
            board[rows+1][cols] = 0
            board[rows][cols] = 2
            print('move down 2')

print语句正在工作,因此满足了条件,但它不会更改数组

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129222
 
1521 次点击  
文章 [ 3 ]  |  最新文章 3 年前