Yos*_*ian 14 python arrays numpy
我想应用一个将2D数组(并返回相同形状之一)的函数应用于3D数组的每个2D切片.这样做的有效方法是什么?numpy.fromiter返回一维数组,numpy.fromfunction需要单独应用于每个坐标.
目前我在做
foo = np.array([func(arg, bar2D) for bar2D in bar3D])
Run Code Online (Sandbox Code Playgroud)
这给了我想要的东西,但列表理解非常慢.此外,func是具有特定边界条件的一维导数.numpy.gradient似乎只有N的数组维度的ND衍生物,但也许有另一个例程可以为我做整件事?
编辑:列表理解有效,但我正在寻找一种更快的方法.bar3D可以很大,最多(500,500,1000).numpy我发现的将函数应用于数组的所有例程似乎都假设函数或数组都是1D.
ato*_*3ls -5
假设你有一个数组,a:
>>> a=np.random.random((4,3,2))
array([[[ 0.27252091, 0.78545835],
[ 0.83604934, 0.48509821],
[ 0.77828735, 0.26630055]],
[[ 0.98623474, 0.29839813],
[ 0.15893604, 0.61870988],
[ 0.62281607, 0.27193647]],
[[ 0.47976331, 0.2471835 ],
[ 0.77323041, 0.30137068],
[ 0.52906156, 0.53950597]],
[[ 0.59207654, 0.86355457],
[ 0.50250812, 0.75688653],
[ 0.91046136, 0.5785383 ]]])
Run Code Online (Sandbox Code Playgroud)
您可以像这样访问 2D 切片:
>>> for x in range(a.shape[0]):
print a[x,:,:]
>>> for x in range(a.shape[1]):
print a[:,x,:]
>>> for x in range(a.shape[2]):
print a[:,:,x]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2031 次 |
| 最近记录: |