使用以下代码
fn_t1 = glob("/T1/*.nii")
fn_fl = glob("/flair/*.nii")
fn_lb = glob("/label/*.nii")
dat_t1 = np.empty(shape=(len(fn_t1),250,250,74), dtype=np.float32)
dat_fl = np.empty(shape=(len(fn_fl),250,250,74), dtype=np.float32)
dat_lb = np.empty(shape=(len(fn_lb),250,250,74), dtype=np.float32)
npad = ((5,5),(5,5),(13,13))
for cnt, f in enumerate(fn_t1):
dat_t1[cnt] = np.pad(nib.load(f).get_data(), pad_width=npad,mode='constant', constant_values=0)
for cnt, f in enumerate(fn_fl):
dat_fl[cnt] = np.pad(nib.load(f).get_data(), pad_width=npad, mode='constant', constant_values=0)
for cnt, f in enumerate(fn_lb):
dat_lb[cnt] = np.pad(nib.load(f).get_data(), pad_width=npad, mode='constant', constant_values=0)
idx = np.transpose(np.unravel_index(np.random.choice(np.prod(1847893),size=1000,replace=False),1847893))
rolling_lb = rolling_window(dat_lb,(1,27,27,27))
rolling_t1 = rolling_window(dat_t1,(1,27,27,27))
rolling_fl = rolling_window(dat_fl,(1,27,27,27))
input_t1 = np.empty(shape=(1000,27,27,27), dtype=np.float32)
voxels = (rolling_lb[...,13,13,13] > 0)
start_time = time.time()
print('------------------------------------------------')
print(np.may_share_memory(rolling_t1,dat_t1))
print(np.may_share_memory(rolling_t1,rolling_t1[voxels[:]]))
你得到这个输出:
True
False
问题:
1:我不知道为什么第二个结果是False
。
2:我想知道如何更改rolling_t1[voxels[:]]
以获得True
结果。
答案 0 :(得分:0)
你在这里看到的是
之间的区别基本切片生成的所有数组始终是原始数组的视图。
高级索引始终返回数据的副本(与返回视图的基本切片形成对比)。
因此使用var wh = $(window).height();
var waypoints = $('.sec1-dmush1').waypoint(function(direction) {
$(this.element).addClass('onScroll');
console.log(11);
}, {
offset: wh-50
});
进行索引会返回副本。
您不能使用任意索引索引数组并获取视图。要获得视图,索引需要使用常量步骤,并切片连续的内存区域,即符合基本索引的要求。使用布尔数组进行索引时通常不会出现这种情况。