Я написал свой ответ до того, как вы добавили источник, и поэтому он основан исключительно на первой части, где вы записываете его словами.Поэтому он не очень надежен с точки зрения изменения размера входных данных.Если вы читаете дальше в книге, Андерс Нильсен на самом деле предлагает свою собственную реализацию.
Мой основной ответ - не однострочный ответ, поскольку это запутало бы то, что он делает, и я бы очень посоветовал вам написать сложныепроцессы, подобные этому, чтобы вы лучше понимали, что на самом деле происходит.В моем коде я делаю firstMatrix, который содержит c-элементы в матрице, и secondMatrix, который содержит d-элементы.Я делаю это для каждой партии из 10, но потом не знал, что вы хотите делать с матрицами, поэтому я просто делаю их для каждой партии.Если вы хотите сгруппировать их или что-то в этом роде, скажите, пожалуйста, и я постараюсь реализовать это.
for batch in np.array_split(a,10):
firstMatrix = np.zeros(shape=(784,10))
secondMatrix = np.zeros(shape=(10,10))
for i in range(len(batch)):
firstMatrix[:,i] = batch[i][0]
secondMatrix[:,i] = batch[i][1]
Если вы действительно хотите однострочный, вот тот, который создает массив firstMatrices и одиндля второй матрицы:
firstMatrices = [np.array([batch[i][0] for i in range(len(batch))]).T for batch in np.array_split(a,10)]
secondMatrices = [np.array([batch[i][1] for i in range(len(batch))]).T for batch in np.array_split(a,10)]