我在尝试获取3D数组作为输出时,使用numpy.fromfunction()函数时遇到问题。
我在lambda(i,j,k)中使用了3个参数,它们应该只是索引-(int,int,int)。相反,我得到了3个形状为(100,100)的numpy数组,因此:
i.shape = (100, 100)
j.shape = (100, 100)
k.shape = (100, 100)
它崩溃了我的lambda函数,因为它需要3个singe int才能工作...
我使用了一个类似于文档中的函数,但是是三维的。错误是numpy实现中的错误吗?https://numpy.org/doc/stable/reference/generated/numpy.fromfunction.html#numpy.fromfunction
文档还说-“因此,结果数组在坐标(x,y,z)处具有值fn(x,y,z)。”
下面是部分代码:
check_reset_flag_fun = lambda i,j,k: self.dist_p_to_plane([i,j,k], plane_equation) > min_dist
reset_flag_mtx = np.fromfunction(check_reset_flag_fun, (100,100,100), dtype=int)
matrix[reset_flag_mtx] = reset_val
1条答案
按热度按时间vtwuwzda1#
我同意hpaulj的答案,但我仍然认为文档中的这一行可能会产生误导:
因此,所得数组在坐标(x,y,z)处具有值fn(x,y,z)。
其结果是fn(X,Y,Z),其中X,Y,Z是由给定形状的np个指数函数得到的指数阵列。
我不满意的解决方案,这是相当混乱,但这里是我的代码:
如果没有np.fromfunction:
下面是解释np.fromfunction如何工作的有趣代码:
输出: