python-3.x - 基于另一个数组的 Numpy 选择
问题描述
main_array
如果索引对应True
于另一个数组中的值的索引,我想从数组中选择一些元素。例如y
应该[14,15,16]
以任意顺序包含
import numpy as np
main_array = np.array([11,12,13,14,15,16])
selector = np.array([0,1,2,3,3,3])
x = np.random.choice(main_array, 3, replace=False) # This works
y = np.random.choice(main_array, 3, replace=False, p=np.where(selector>2)) # This fails
但是,我得到ValueError: 'p' must be 1-dimensional
了将选择限制为基于另一个数组的索引的正确方法是什么?
解决方案
一种方法是按部分制作:
import numpy as np
main_array = np.array([11, 12, 13, 14, 15, 16])
selector = np.array([0, 1, 2, 3, 3, 3])
x = np.random.choice(main_array, 3, replace=False)
z = main_array[selector > 2]
y = np.random.choice(z, len(z), replace=False)
print(f"x={x}")
print(f"z={z}")
print(f"y={y}")
输出是
x=[16 14 13]
z=[14 15 16]
y=[16 15 14]
mask
另一种方法是将不适用的概率设为零:
import numpy as np
main_array = np.array([11, 12, 13, 14, 15, 16])
selector = np.array([0, 1, 2, 3, 3, 3])
x = np.random.choice(main_array, 3, replace=False)
p = 1 * (selector > 2)
y = np.random.choice(main_array, 3, replace=False, p=p / np.sum(p))
print(y)
推荐阅读
- ios - 当 UIImageView 有图像时,UICollectionView 自定义单元格 UILabel 丢失
- html - Div 对结果没有影响,不读取边框和其他类似属性,无法发布,注释掉时对包含的元素有影响
- python - 保存并能够在 python 3 中加载列表
- opencv - 如何使用胡萝卜素功能?
- lazy-loading - 在 PHP 中使用 glob() 函数后使用 jQuery 延迟加载图片
- android - @Composable 调用只能在 @Composable 函数的上下文中发生
- javascript - 如何在 Leaflet 的 FeatureCollection 属性中使用参数设置多边形的样式?
- c# - 将 C# 转换为 VB.NET,实现 IHttpHandler?
- javascript - Node js mysql2 - 重用连接
- firebase - 在 react native 中获取 base64 编码的图像