Let me preface this by detailing some of my design philosophy. The intent is to view the board from the perspective of the active player. Player moves are also factored into the design. When determining move logic, all that needs to happen is comparing against `'0'`. For checking the whiteness or blackness of a piece, `ord(c) % 265` should help by pulling the remainder and checking if it's in `range(4,10)` or `range(10,16)`. Anyway, any optimizations and critique is welcome! I'm particularly interested if it involves `numpy`, `scipy` | bitwise operators.

**chess.py**

```py
import numpy as np

chrs = {
    'b_checker': u'\u25FB',
    'b_pawn': u'\u265F',
    'b_rook': u'\u265C',
    'b_knight': u'\u265E',
    'b_bishop': u'\u265D',
    'b_king': u'\u265A',
    'b_queen': u'\u265B',
    'w_checker': u'\u25FC',
    'w_pawn': u'\u2659',
    'w_rook': u'\u2656',
    'w_knight': u'\u2658',
    'w_bishop': u'\u2657',
    'w_king': u'\u2654',
    'w_queen': u'\u2655'
}

def get_checkers():
    bw_row = [chrs['b_checker'], chrs['w_checker']]*4
    bw_checkers = []

    for i in range(8):
        bw_checkers.append(bw_row if i % 2 == 0 else bw_row[::-1])

    bw_checkers = np.array(bw_checkers)
    wb_checkers = bw_checkers[::-1]
    return {'W': wb_checkers, 'B': bw_checkers}

def get_board():

    def get_army(user):
        u = user.lower()
        guard = [chrs[u+'_rook'], chrs[u+'_knight'], chrs[u+'_bishop']]
        rear = guard + [chrs[u+'_king'], chrs[u+'_queen']] + guard[::-1]
        front = [chrs[u+'_pawn']]*8

        if user == 'B':
            return [rear, front]
        else:  # since white moves first
            return [front, rear]

    board = [squad for squad in get_army('B')]

    for _ in range(4):
        board.append(['0']*8)

    board += get_army('W')

    return np.array(board)

def print_board(board, checkers, user):
    chks = checkers[user]
    temp = board.copy() if user == 'W' else board.copy()[::-1]

    for i, row in enumerate(temp):
        for j, c in enumerate(row):
            print('', chks[i][j] if c == '0' else c, end='', flush=True)
        print()

if __name__ == "__main__":
    checkers = get_checkers()
    board = get_board()
    user = 'W'
    print_board(board, checkers, user)

```

***Present Output:***

*White's Perspective*

[![white](https://i.stack.imgur.com/Grrou.jpg)](https://i.stack.imgur.com/Grrou.jpg)

> 
> 
> ```
> ♜ ♞ ♝ ♚ ♛ ♝ ♞ ♜
> ♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟
> ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
> ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
> ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
> ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
> ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙
> ♖ ♘ ♗ ♔ ♕ ♗ ♘ ♖
> 
> ```
> 
> 

*Black's Perspective*

[![black](https://i.stack.imgur.com/SYh7R.jpg)](https://i.stack.imgur.com/SYh7R.jpg)

> 
> 
> ```
> ♖ ♘ ♗ ♔ ♕ ♗ ♘ ♖
> ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙
> ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
> ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
> ◻ ◼ ◻ ◼ ◻ ◼ ◻ ◼
> ◼ ◻ ◼ ◻ ◼ ◻ ◼ ◻
> ♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟
> ♜ ♞ ♝ ♚ ♛ ♝ ♞ ♜
> 
> ```
> 
>