Python Numpy快速填充三维矩阵
可以使用numpy函数加速以下代码吗Python Numpy快速填充三维矩阵,python,numpy,matrix,Python,Numpy,Matrix,可以使用numpy函数加速以下代码吗 def fill3D(x,y,z,n): M = np.zeros((n,n,n)) for i,j,k in zip(x,y,z): M[i,j,k] += 1 return M 这里x,y,z是矩阵M 索引三元组(i,j,k)是非唯一的。一些矩阵项将保持在0,一些将保持1,一些将大于该值一种解决方案是使用np.unique()来计算重复索引的数量,然后分配值: import numpy as np # Dumm
def fill3D(x,y,z,n):
M = np.zeros((n,n,n))
for i,j,k in zip(x,y,z):
M[i,j,k] += 1
return M
这里x,y,z
是矩阵M
索引三元组
(i,j,k)
是非唯一的。一些矩阵项将保持在0
,一些将保持1
,一些将大于该值一种解决方案是使用np.unique()
来计算重复索引的数量,然后分配值:
import numpy as np
# Dummy index, with duplicate entries
x = np.array([1, 0, 0])
y = np.array([0, 1, 1])
z = np.array([2, 2, 2])
# Empty 3x3x3 matrix
M = np.zeros((3,3,3))
# Count and assign the new values:
ind,val = np.unique(np.vstack((x,y,z)),return_counts=True,axis=1)
M[ind[0],ind[1],ind[2]] = val
一种解决方案是使用
np.unique()
来计算重复索引的数量,然后分配值:
import numpy as np
# Dummy index, with duplicate entries
x = np.array([1, 0, 0])
y = np.array([0, 1, 1])
z = np.array([2, 2, 2])
# Empty 3x3x3 matrix
M = np.zeros((3,3,3))
# Count and assign the new values:
ind,val = np.unique(np.vstack((x,y,z)),return_counts=True,axis=1)
M[ind[0],ind[1],ind[2]] = val