Добавление меньшего массива np в пустой большой массив np

вы не должны использовать

example * ex = (example *) malloc (sizeof (* ex));

, потому что какой sizeof (* ex) return равен размеру long или size int, что связано с тем, что вы скомбинируете окружающий. вы можете использовать следующий код:

example * ex = (пример *) malloc (sizeof (пример));

0
задан 18 January 2019 в 11:44
поделиться

2 ответа

Это должно быть просто нарезкой.

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)

Существует разница в скорости. Цикл лучше.

0
ответ дан NanoBennett 18 January 2019 в 11:44
поделиться

Это должно сделать это - просто используйте стандартный вложенный для цикла и синтаксиса присваивания массивов:

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
0
ответ дан FHTMitchell 18 January 2019 в 11:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: