小编Ker*_*ten的帖子

Numpy:索引3D数组,其中最后一个轴的索引存储在2D数组中

我有一个ndarrayshape(z,y,x)含值.我想这个指数阵列的另一个ndarrayshape(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_arrz_indices在所需的Z轴位置,以获得价值?预期结果将是:

result_arr = np.array([[9,1,20],
                       [3,4,14],
                       [24,7,17]])
Run Code Online (Sandbox Code Playgroud)

python arrays numpy python-2.7

8
推荐指数
4
解决办法
3957
查看次数

大型 3D 阵列上的快速 1D 线性 np.NaN 插值

我有一个 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)

python interpolation numpy scipy pandas

5
推荐指数
1
解决办法
2007
查看次数

标签 统计

numpy ×2

python ×2

arrays ×1

interpolation ×1

pandas ×1

python-2.7 ×1

scipy ×1