番兵付きの一次元配列
see 地図読み込み時に番兵をつける
from ABC170_F
改行限り文字列を番兵付きの一次元配列にする。
code:python
C = np.zeros((H + 2, W + 2), np.bool_)
C1:-1, 1:-1 = np.frombuffer(read(), 'S1').reshape(H, -1):, :W == b'.'
C = C.ravel()
H += 2
W += 2
ValueError: could not broadcast input array from shape (3,0) into shape (3,5)
already read all data from stdin
各ステップ解説
code:python
>> np.frombuffer(b"...\n.@.\n...\n", "S1")
array([b'.', b'.', b'.', b'\n', b'.', b'@', b'.', b'\n', b'.', b'.', b'.',
b'\n'], dtype='|S1')
>> _.reshape(3, -1)
array([b'.', b'.', b'.', b'\n',
b'.', b'@', b'.', b'\n',
b'.', b'.', b'.', b'\n'], dtype='|S1')
>> _:,:3
array([b'.', b'.', b'.',
b'.', b'@', b'.',
b'.', b'.', b'.'], dtype='|S1')
>> _ == b"."
array([ True, True, True,
True, False, True,
True, True, True])
>> C = np.zeros((3 + 2, 3 + 2), np.bool_)
>> C1:-1, 1:-1 = _
>> C
array([False, False, False, False, False,
False, True, True, True, False,
False, True, False, True, False,
False, True, True, True, False,
False, False, False, False, False])
>> C.ravel()
array([False, False, False, False, False, False, True, True, True,
False, False, True, False, True, False, False, True, True,
True, False, False, False, False, False, False])