我有一个ndarray的shape(z,y,x)含值.我想这个指数阵列的另一个ndarray的shape(y,x)包含我感兴趣的是值的的z-index.
import numpy as np
val_arr = np.arange(27).reshape(3,3,3)
z_indices = np.array([[1,0,2],
[0,0,1],
[2,0,1]])
Run Code Online (Sandbox Code Playgroud)
由于我的数组相当大,我试图使用它np.take来避免不必要的数组副本,但只是不能用我的头围绕索引三维数组.
我怎么有索引val_arr与z_indices在所需的Z轴位置,以获得价值?预期结果将是:
result_arr = np.array([[9,1,20],
[3,4,14],
[24,7,17]])
Run Code Online (Sandbox Code Playgroud) 我有一个 3D 数组(z, y, x),shape=(92, 4800, 4800)其中每个值都axis 0代表不同的时间点。在少数情况下,时域中的值获取失败,导致某些值变为np.NaN。在其他情况下,没有获取任何值,所有值z都是np.NaN。
什么是使用线性插值来填充最有效的方式np.NaN沿着axis 0无视所有的值是实例np.NaN?
这是我正在做的工作的一个工作示例,它使用pandas包装器到scipy.interpolate.interp1d. 在原始数据集上,每个切片大约需要 2 秒,这意味着整个数组的处理时间为 2.6 小时。减小大小的示例数据集大约需要 9.5 秒。
import numpy as np
import pandas as pd
# create example data, original is (92, 4800, 4800)
test_arr = np.random.randint(low=-10000, high=10000, size=(92, 480, 480))
test_arr[1:90:7, :, :] = -32768 # NaN fill value in original data
test_arr[:, 1:90:6, 1:90:8] = …Run Code Online (Sandbox Code Playgroud)