наименьшие блоки памяти - байты. Так что вообще не стоит этого делать. Однако, если вы настаиваете, вот уловка, чтобы сделать это:
import struct
with open("test.bnr", "wb") as f:
for i in range(0,len(arr),8):
bin_array = struct.pack('Q', int(''.join(arr[i:i+8].astype(str)), base=2))
f.write(bin_array)
Преобразуйте ваш список в строки длиной 8 байтов, а затем преобразуйте строки в одинарные беззнаковые двойные и запишите их в файл. Это сохранит его до ближайших кратных 8 байтов. Конечно, вы можете сделать это с другими типами данных (одиночные байты, ints = 4bytes, ...) для ближайших кратных, которые вам нужны.