python - 在 Python 中构建随机集群的更 Pythonic 方式

标签 python arrays numpy

我想创建一个函数,它将创建一个以一组坐标为中心并具有指定半径的均匀分布随机簇,我已经通过以下方法完成了此操作:

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还接受 lowhigh 作为数组/列表。因此,我们可以简单地做 -

c = np.asarray(center)
xx,yy,zz = np.random.uniform(c-radius, c+radius, size=(n,3)).T

如果任何旧版本仅支持标量lowhigh,我们可以使用一些缩放 -

xx,yy,zz = np.random.uniform(size=(3,n))*radius*2 + c[:,None] - radius

关于python - 在 Python 中构建随机集群的更 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60575828/

相关文章:

python - 计算时间序列中两点之间的角度

arrays - 即使在 slice 和变异之后,为什么/如何保留其初始化值?

c++ - 有没有办法在两个 ROS 节点之间有优先级?

python - 将 1 维 numpy 数组克隆到 3 维时出现维序问题

python - Ubuntu:安装 tor 浏览器并将其与 Selenium Python 一起使用

python - 用 beautifulsoup 中的链接拆分一个逗号分隔的列表

python - 如何在 Telegram Bot 中用键盘回复?

php - mb_strtolower 和 utf8 字符串

python - Python Numpy矩阵运算-矩阵[a == b]?

python - 将 numpy 数组的元组保存到磁盘?