python - 根据模式重复数字 numpy

标签 python numpy

我有一个数组,例如 p = [2,3,2,4] 和一个数字,例如 n = 4。我需要根据模式 p, n-p 生成一个由 1 和 0 组成的数组。也就是说,对于 p 中的每个元素 u,有 u 个 1 后跟 n-u 个 0。使用 np.insert 操作可以很容易地做到这一点。但 theano 没有任何插入操作。是否可以在不使用循环的情况下实现这一目标?另外,给定多个这样的 ps 和相应的 ns,是否可以在不使用循环的情况下生成 1 和 0 模式? 这是一个例子: 1 p的值:

p = [2,3,2,4,1], n=4
n-p = [2,1,2,0,3]
result = [1,1,0,0,1,1,1,0,1,1,0,0,1,1,1,1,1,0,0,0]

p 的多个值:在这种情况下,所有 p 将具有相同的维度(p 是一个二维数组)

p = [[2,3,2,4,1],[2,2,3,5,4]], n = [4, 5]
n-p = [[2,1,2,0,3],[3,3,2,0,1]]
result = [[1,1,0,0,1,1,1,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0],[1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0]]

请注意,我在 result[0] 末尾填充了 0,以匹配 result[0] 和 result[1] 的尺寸

最佳答案

p = numpy.array([2, 3, 2, 4])
n = 4
result = (p[:, None] > numpy.arange(n)).ravel().astype(int)

我们比较

[[2]
 [3]
 [2]
 [4]]

[0 1 2 3] 获取 bool 数组,然后将其展平并将其转换为整数以获得所需的输出。

关于python - 根据模式重复数字 numpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38663470/

相关文章:

python - 为什么这种模拟退火算法应用于TSP不收敛?

python - 创建字符串的变体

python - 两个已知维度的 numpy 数组的点积未达到预期的维度

python - 如何计算数组中相邻的重复元素?

python - 加权选择简短而简单

python - 动态更改crossbar.io授权

python - 如何(正确)使用 PIP 安装和导入 pymavlink

python - 如何查找文件中出现的所有字符串(不区分大小写),python?

python - 对角线等于零且 [x,y] =-[y,x] 的 numpy 数组

python - 找到两个 'connected' 矩阵的最大值最小值的最快方法