Параметр RFID-массива для Python

#python #arrays #arduino #raspberry-pi #rfid

Вопрос:

Мы хотим реализовать шахматную доску, на которую считыватель RFID отправляет информацию о том, какой квадрат поднимается. Обычно мы получаем массив от Arduiner (считыватель RFID)

 [['bR', 'bN', 'bB', 'bQ', 'bK', 'bB', 'bN', 'bR'],
['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp'],
['--', '--', '--', 'wQ', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['wp', 'wp', 'wp', 'wp', 'wp', 'wp', 'wp', 'wp'],
['wR', 'wN', 'wB', 'wQ', 'wK', 'wB', 'wN', 'wR']]
 

примерно каждую секунду. И когда фигура поднимается, Читатель отправляет нам матрицу, где Место пустое. Например, когда белая пешка поднимается вверх:

 [['bR', 'bN', 'bB', 'bQ', 'bK', 'bB', 'bN', 'bR'],
['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp'],
['--', '--', '--', 'wQ', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['wp', 'wp', 'wp', 'wp', 'wp', '--', 'wp', 'wp'],
['wR', 'wN', 'wB', 'wQ', 'wK', 'wB', 'wN', 'wR']]
 

у кого-нибудь есть идея, как мы могли бы извлечь информацию из этих двух массивов, что этот квадрат (F2, или строка/столбец и т. Д.) Был выбран в Python или Arduino?

Ответ №1:

Модуль numpy предлагает чрезвычайно удобный для чтения способ сделать это (встроенный комментарий).:

 import numpy as np

old_array = np.array([['bR', 'bN', 'bB', 'bQ', 'bK', 'bB', 'bN', 'bR'],
['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp'],
['--', '--', '--', 'wQ', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['wp', 'wp', 'wp', 'wp', 'wp', 'wp', 'wp', 'wp'],
['wR', 'wN', 'wB', 'wQ', 'wK', 'wB', 'wN', 'wR']])

new_array = np.array([['bR', 'bN', 'bB', 'bQ', 'bK', 'bB', 'bN', 'bR'],
['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp'],
['--', '--', '--', 'wQ', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['--', '--', '--', '--', '--', '--', '--', '--'],
['wp', 'wp', 'wp', 'wp', 'wp', '--', 'wp', 'wp'],
['wR', 'wN', 'wB', 'wQ', 'wK', 'wB', 'wN', 'wR']])

# Array containing True iff there was a change between
# old_array and new_array
bool_array = old_array != new_array

# Tuple containing ([array of changed y coords], [array of changed x coords])
print(np.nonzero(bool_array))
 

Комментарии:

1. Большое вам спасибо!