для личного проекта. Я пытаюсь уменьшить трехмерную сетку, представленную в виде массива sparse.COO
, с изображением, подобным данным (Индекс кодирует пространственную информацию, значение кодирует массу).
Насколько я знаю,sparse охватывает наиболее важные части API Numpy, поэтому в дальнейшем я буду использовать Numpy в качестве примера.К сожалению, некоторые Frameworks не очень хорошо обрабатывают массивы со многими ненулевыми записями.
Я попытался написать функцию, которая суммирует блок из 2 ^ 3 = 8 элементов вместе, основываясь на этом вопросе NumPy: сумма всех n столбцов матрицы , но моя версия не работаетThe Indeces:
sparray = np.arange(10*10*10).reshape(10,10,10)
#number of entries to sum in every direction, 2 for only neighbours
num_entries = 2
#the last 3 axis of the reshaped array
axis = tuple(range(-sparray.ndim,0))
downsampled_array = sparray.reshape(
tuple(
[int(s/num_entries) for s in sparray.shape]+[num_entries]*sparray.ndim
)
).sum(axis=axis)
Пример 2d Пример:
sparray = np.arange(4*4).reshape(4,4)
>>>array(
[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
axis = tuple(range(-sparray.ndim,0))
>>>(-2, -1)
#This is what the code does:
>>>array(
[[ 6, 22],
[38, 54]])
#should do:
array(
[[10, 19],
[42, 50]]
)
заранее спасибо, вероятно, это действительно глупая ошибка.