Как насчет заполнения размера результатов до ближайшего кратного 3 перед повторной формой. Затем вы можете отфильтровать пустые значения после преобразования в список
>>> results = ['a']
>>> l = len(results)
>>> n = int(l/3)+1 if l%3 else int(l/3)
>>> np.pad(np.array(results), ((0,n*3-l)), mode='constant').reshape((n,3), order='F')
array([['a', '', '']], dtype='<U1')