我想创建一个函数,它将创建一个以一组坐标为中心并具有指定半径的均匀分布随机簇,我已经通过以下方法完成了此操作:
import numpy as np
# create cluster builder
def cluster(center, radius=10, n=50):
xx = np.random.uniform(center[0]-radius, center[0]+radius, size=n)
yy = np.random.uniform(center[1]-radius, center[1]+radius, size=n)
zz = np.random.uniform(center[2]-radius, center[2]+radius, size=n)
return xx, yy, zz
# create random cluster
xx1, yy1, zz1 = cluster((25, 15, 5))
这按预期工作,但我只是觉得它们必须是一种更 Pythonic 的方式来构建集群函数。有人有什么建议吗?
最佳答案
np.random.uniform
还接受 low
和 high
作为数组/列表。因此,我们可以简单地做 -
c = np.asarray(center)
xx,yy,zz = np.random.uniform(c-radius, c+radius, size=(n,3)).T
如果任何旧版本仅支持标量low
和high
,我们可以使用一些缩放 -
xx,yy,zz = np.random.uniform(size=(3,n))*radius*2 + c[:,None] - radius
关于python - 在 Python 中构建随机集群的更 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60575828/