Как разделить 2d массив в python?

Есть 2d массив данных. Надо разделить этот массив на равное количество столбцом =10(записывать в новый массив 'xf'):

import pandas as pd
import numpy as np
arr = np.random.rand(100, 260) 
print("Numpy array : ",arr ) 
# conversion into dataframe 
df = pd.DataFrame(arr)

Дополнительное условие, количество столбцом 260 может быть не точным, например 259 или 261, тогда при обращении к последнему новому массиву 'xf[26]' когда columns=259 ,будет выводится 9 столбцов, а при 'xf[27]' когда columns=261 только 1 столбец. Никак не могу решить такую задачу.


Ответы (2 шт):

Автор решения: CrazyElf

Ну что тут особо решать, есть же срезы:

import pandas as pd
import numpy as np
arr = np.random.rand(100, 21) 

x = [arr[:,i*10:(i+1)*10] for i in range((arr.shape[1]+9)//10)]
print([i.shape for i in x])

#[(100, 10), (100, 10), (100, 1)]
→ Ссылка
Автор решения: nigani

Для DataFrame решение следующее:

import pandas as pd
import numpy as np
arr = np.random.rand(100, 261)
df = pd.DataFrame(arr)

xf = [df[df.columns[l:l+10]] for l in range(0, df.shape[1], 10)]
xf[26]

# Один столбец

при 'xf[27]' когда columns=261 только 1 столбец

Неверно, нумерация начинается с 0, поэтому 1 столбец будет у xf[26].

→ Ссылка