Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy快速填充三维矩阵_Python_Numpy_Matrix - Fatal编程技术网

Python 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

可以使用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

# 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