簡體   English   中英

在n維中擴展numpy數組

[英]expand numpy array in n dimensions

我正在嘗試“擴展”一個數組(生成一個在所有維度上按比例分配更多元素的新數組)。 我有一個已知數字的數組(我們稱其為X ),並且我想使其尺寸增大j倍(在每個維度上)。

到目前為止,我生成了一個包含更多元素的零數組,然后使用廣播將原始數字插入到新數組中(固定間隔)。

最后,我使用linspace填補了空白,但實際上這部分與問題沒有直接關系。

我使用的代碼(對於n = 3)是:

import numpy as np
new_shape = (np.array(X.shape) - 1 ) * ratio + 1
new_array = np.zeros(shape=new_shape)
new_array[::ratio,::ratio,::ratio] = X

我的問題是這不是一般性的,我將不得不根據ndim修改第三行。 有沒有一種方法可以對陣列中任意數量的維度使用這種廣播?

編輯:更准確地說,第三行必須是:

new_array[::ratio,::ratio] = X

如果ndim = 2或

new_array[::ratio,::ratio,::ratio,::ratio] = X

如果ndim = 4

等等。我想避免不得不為每種ndim編寫代碼

ps如果有更好的工具來完成整個過程(例如我不知道的“內部填充”,我將很樂意學習)。

謝謝

array = array[..., np.newaxis]將添加另一個維度

本文可能會有所幫助

您可以使用slice符號-

slicer = tuple(slice(None,None,ratio) for i in range(X.ndim))
new_array[slicer] = X

手動構建切片元組。 ::ratio等效於slice(None, None, ratio)

new_array[(slice(None, None, ratio),)*new_array.ndim] = ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM