Выберите из 2D списка все строки, где столбец имеет желаемое значение - PullRequest
0 голосов
/ 23 января 2020

У меня есть 2D список элементов MxN. Я хочу, чтобы все те строки, где столбец J имеет определенное значение. Моя идея сделать:

my_2D_list = np.transpose(np.array(my_2D_list))
temp = my_2D_list[my_2D_list[j] == myvalue]

, но температура пуста. Если я распечатываю my_2D_list, я вижу, что массив транспонирован, но он выглядит так:

 [['0' '0' '0' ... '0' '0' '0']
  ['0' '0' '1' ... '75' '80' '80'] 
  ['60' '60' '0' ... '10' '108' '108']  ...

без запятых между столбцами, поэтому я предполагаю, что он не разделяет каждую строку в столбцах в новой матрице, но вид континуума ... как я могу это исправить?

1 Ответ

1 голос
/ 23 января 2020

Чтобы выбрать значения из столбца в матрице, вы должны сделать это следующим образом:

list[row_idx, col_idx]

, где первый аргумент индекса - это индекс строки, а второй аргумент - это индекс столбца. Вы можете проверить документы здесь.

В вашем случае это будет выглядеть так: my_2D_list[:, j]. Вот полный пример для проверки:

j = 2
n = 1

np.random.seed(42)
my_2D_list = np.random.randint(0, 3, 100).reshape((10, 10))

print(">>> Whole matrix\n%s" % my_2D_list)
print("\n>>> Column %d\n%s" % (j, my_2D_list[:,j]))
print("\n>>> Rows where column %d == %d \n%s" % (j, n, my_2D_list[my_2D_list[:,j] == n]))

Вывод:

>>> Whole matrix
[[2 0 2 2 0 0 2 1 2 2]
 [2 2 0 2 1 0 1 1 1 1]
 [0 0 1 1 0 0 0 2 2 2]
 [1 2 1 1 2 1 2 2 0 2]
 [0 2 2 0 0 2 1 0 1 1]
 [1 0 1 0 1 2 2 0 2 2]
 [1 0 1 1 1 1 1 1 1 0]
 [2 1 1 1 1 1 1 2 2 1]
 [2 0 1 0 0 1 2 0 1 0]
 [0 0 0 2 0 0 0 2 0 0]]

>>> Column 2
[2 0 1 1 2 1 1 1 1 0]

>>> Rows where column 2 == 1 
[[0 0 1 1 0 0 0 2 2 2]
 [1 2 1 1 2 1 2 2 0 2]
 [1 0 1 0 1 2 2 0 2 2]
 [1 0 1 1 1 1 1 1 1 0]
 [2 1 1 1 1 1 1 2 2 1]
 [2 0 1 0 0 1 2 0 1 0]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...