Как разделить 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].