小编Too*_*ool的帖子

从索引矩阵填充矩阵

我想从索引数组填充矩阵:

import numpy as np

indx = [[0,1,2],[1,2,4],[0,1,3],[2,3,4],[0,3,4]]
x = np.zeros((5,5))
for i in range(5):
    x[i,indx[i]] = 1.
Run Code Online (Sandbox Code Playgroud)

结果是:

array([[ 1.,  1.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  0.,  1.],
       [ 1.,  1.,  0.,  1.,  0.],
       [ 0.,  0.,  1.,  1.,  1.],
       [ 1.,  0.,  0.,  1.,  1.]])
Run Code Online (Sandbox Code Playgroud)

如预期的.

有没有办法在没有循环的纯python/numpy中执行此操作?

python numpy matrix

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

使用 NumPy 将 3D 函数映射到网格的有效方法

我有一组标量 3D 函数的数据值,它们排列为x,y,zshape 数组中的输入和shape 数组中的(n,3)函数值。f(x,y,z)(n,)

编辑:例如,考虑以下简单函数

data = np.array([np.arange(n)]*3).T
F = np.linalg.norm(data,axis=1)**2
Run Code Online (Sandbox Code Playgroud)

我想将此函数与球形内核进行卷积以执行 3D 平滑。我发现执行此操作的最简单方法是将函数值映射到 3D 空间网格中,然后使用我想要的内核应用 3D 卷积。

这工作正常,但是将 3D 函数映射到 3D 网格的部分非常慢,因为我没有找到仅使用 NumPy 来完成此操作的方法。下面的代码是我的实际实现,其中data(n,3)包含函数求值的 3D 位置的数组,F(n,)包含函数相应值的数组,M(N,N,N)包含 3D 空间网格的数组。

step = 0.1

# Create meshgrid
xmin = data[:,0].min()
xmax = data[:,0].max()
ymin = data[:,1].min()
ymax = data[:,1].max()
zmin = data[:,2].min()
zmax = data[:,2].max()

x = np.linspace(xmin,xmax,int((xmax-xmin)/step)+1)
y = np.linspace(ymin,ymax,int((ymax-ymin)/step)+1)
z …
Run Code Online (Sandbox Code Playgroud)

python performance numpy

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

标签 统计

numpy ×2

python ×2

matrix ×1

performance ×1