Вот процедура из Udacity Искусственный интеллект для робототехники. Они предоставляют собственный класс матрицы, используя только стандартные библиотеки, и это позволяет расширить массив до больших размеров и указать, где меньшие исходные элементы массива go.
# ------------
#
# creates a new matrix from the existing matrix elements.
#
# Example:
# l = matrix([[1, 2, 3],
# [4, 5, 6]])
#
# l.expand(3, 5, [0, 2], [0, 2, 3])
# expand into a 3 * 5 matrix and map old elements to rows
# 0 and 2 and cols 0,2,3
# results in:
#
# [[1, 0, 2, 3, 0],
# [0, 0, 0, 0, 0],
# [4, 0, 5, 6, 0]]
#
# expand is used to introduce new rows and columns
# into an existing matrix
# list1/list2 are the new indexes of row/columns in which the matrix
# elements are being mapped. Elements for rows and columns
# that are not listed in list1/list2
# will be initialized by 0.0.
#
def expand(self, dimx, dimy, list1, list2 = []):
if list2 == []:
list2 = list1
if len(list1) > self.dimx or len(list2) > self.dimy:
raise ValueError("list invalid in expand()")
res = matrix()
res.zero(dimx, dimy)
for i in range(len(list1)):
for j in range(len(list2)):
res.value[list1[i]][list2[j]] = self.value[i][j]
return res
Есть ли что-то похожее в Numpy? Я прочитал документы для np.resize () и .resize (), но не увидел никаких параметров для этого.