вы не должны использовать
example * ex = (example *) malloc (sizeof (* ex));
blockquote>, потому что какой sizeof (* ex) return равен размеру long или size int, что связано с тем, что вы скомбинируете окружающий. вы можете использовать следующий код:
example * ex = (пример *) malloc (sizeof (пример));
blockquote>
Это должно быть просто нарезкой.
small = np.random.rand(100, 100, 100)
big = np.zeros((1000, 1000, 100), dtype=np.int16)
Если вы хотите добиться большого из множества маленьких, вот еще один способ.
big = np.concatenate([small] * (big.shape[0] // small.shape[0]), axis=1)
big = np.concatenate([big] * (big.shape[1] // small.shape[1]), axis=0)
Существует разница в скорости. Цикл лучше.
Это должно сделать это - просто используйте стандартный вложенный для цикла и синтаксиса присваивания массивов:
small = np.random.rand(100, 100, 100)
big = np.zeros((1000, 1000, 100), dtype=np.int16)
for i in range(0, 1000, 100):
for j in range(0, 1000, 100):
big[i:i+100, j:j+100, :] = small
Для универсальных трехмерных массивов:
def inset_into(small, big):
sx, sy, sz = small.shape
bx, by, bz = big.shape
# make sure values work
assert bx % sx == 0
assert by % sy == 0
assert bz == sz
for i in range(0, bx, sx):
for j in range(0, by, sy):
big[i:i+sx, j:j+sy, :] = small
return big