有一个0-1矩阵,我需要从该矩阵中抽取M个不同的1值的条目。有这种需求有效的Python实现吗?基准线方法是在每次迭代过程中进行M次迭代,如果它的值为1,则随机取样1,然后保留它并保存它的位置,否则继续此迭代直到找到值为1的入口;并继续下一次迭代。这似乎不是一个好的启发式。矩阵中的样本条目满足给定的要求
1
A
回答
0
我选择了间接指数从numpy.nonzero
通过ndx_ndx名单上使用pop()方法来获得一个(间接)索引输入数组不用更换回
最终ndx_ndx会当你有被清空得到所有的那些
import numpy as np
ary = np.random.randint(2, size=(20, 20))
# get the indices of all of the ones
ndx_ary_ones = np.nonzero(ary)
# make a range list for pointing into ndx_ary_ones
ndx_ndx = list(range(len(ndx_ary_ones[0])))
# randomize the order
np.random.shuffle(ndx_ndx)
# pop the last ndx_ndx
a_ran_ndx_ndx = ndx_ndx.pop()
# get the index tuple for the one in ary that we removed from ndx_ndx
a_ran_one_ndx = (ndx_ary_ones[0][a_ran_ndx_ndx],
ndx_ary_ones[1][a_ran_ndx_ndx])
# testing...
print('ary', ary, '\n')
print('ndx_ary_ones ', *ndx_ary_ones, sep = '\n')
print('\n','ndx_ndx[0:10] ', ndx_ndx[0:10], '\n')
for _ in range (10):
a_ran_ndx_ndx = ndx_ndx.pop()
a_ran_one_ndx = (ndx_ary_ones[0][a_ran_ndx_ndx],
ndx_ary_ones[1][a_ran_ndx_ndx])
print(a_ran_one_ndx, ary[a_ran_one_ndx])
ary [[0 0 0 ..., 1 1 1]
[0 1 1 ..., 1 1 1]
[1 0 0 ..., 1 0 1]
...,
[1 1 0 ..., 1 0 1]
[1 1 0 ..., 1 1 1]
[1 0 0 ..., 0 0 1]]
ndx_ary_ones
[ 0 0 0 ..., 19 19 19]
[ 3 5 7 ..., 14 15 19]
ndx_ndx[0:10] [121, 43, 146, 69, 64, 3, 29, 186, 98, 30]
(7, 12) 1
(8, 18) 1
(0, 3) 1
(10, 2) 1
(18, 18) 1
(17, 7) 1
(15, 14) 1
(4, 11) 1
(10, 1) 1
(4, 4) 1
0
我们能够做到以如下方式组成:第一获得矩阵A,其中A [X,Y] = 1的所有的(X,Y)的元组(索引)。有k个这样的指数。现在滚动一个K边无偏骰子M次(我们可以使用函数randint(1,k)
从均匀分布中抽取样本来模拟)。如果你想要更换样品(矩阵的相同位置可以选择多次),那么可以用M个函数调用完成。否则,对于有替换的样品(不允许重复),您需要跟踪已选择的位置,并在下次投掷潜水之前从阵列中删除这些索引。
相关问题
- 1. Matlab:如何找到满足一定要求的矩阵的行索引?
- 2. 找不到满足要求的版本
- 3. 查询满足给定的条件
- 4. 选择给定索引矩阵的矩阵的一些条目?
- 5. 获取满足条件的Python矩阵的行索引
- 6. 未能满足项目要求
- 7. 选择满足公平条件的右矩阵
- 8. 其不会满足给定条件
- 9. 在三维矩阵中返回变量索引满足条件
- 10. 如果不满足要求,重定向
- 11. TeamCity - 未满足要求(DotNetFramework4.0_x86)
- 12. pip - 要求已满足?
- 13. 满足这些要求
- 14. 矢量满足在r中的项目的条件要素的
- 15. 如何找到满足特定条件的矩阵行的索引?
- 16. 将满足一定条件的scipy.sparse矩阵的行设置为零
- 17. 在podfile中指定版本时无法满足要求
- 18. 从其中一些其他列满足给定条件的矩阵中选择列
- 19. 使用矩阵条目改变矩阵中的条目
- 20. 使用LINQ找到一个矩阵的各项指标满足一定条件
- 21. 确定满足海明距离矩阵的字符串
- 22. 满足条件的
- 23. TeamCity未满足的要求:MSBuildTools14.0_x86_Path存在
- 24. 基于满足要求的Excel分类
- 25. Lodash,以满足对象的要求
- 26. 寻找大的矩阵满足一定条件的元素各项指标给出的MemoryError
- 27. 在Heroku中找不到满足要求tensorflow == 1.0.0的版本
- 28. 如何选择其中的子元素满足给定条件
- 29. 如何写一个solver.prototxt满足CAFFE中给定的条件?
- 30. 一个项目,以满足在规定的时间规定的要求
你在这里工作?什么是矩阵?列表清单?一些'numpy'数据结构? –
确实需要一次一个吗? http://stackoverflow.com/q/17385419/6876009或者快速获取所有http://stackoverflow.com/q/432112/6876009 – f5r5e5d
@ junapa.arrivillaga的列表,它是一个二维numpy数组,从图像生成,只有白色和黑色。 – user288609