在python中创建大矩阵的随机子矩阵

时间:2016-02-05 09:39:00

标签: python

我有以下代码来创建一个大集合的随机子集(大小示例):

def sampling(input_set):
        tmp = random.sample(input_set, examples)
        return tmp

问题是我的输入是一个大矩阵,所以input_set.shape =(n,m)。但是,sampling(input_set)是一个列表,而我希望它是size =(examples,m)的子矩阵,而不是大小为m的向量的examples长度列表。

我修改了我的代码来执行此操作:

def sampling(input_set):

    tmp = random.sample(input_set, examples)
    sample = input_set[0:examples]

    for i in range(examples):
        sample[i] = tmp[i]

    return sample

这样可行,但有没有更优雅/更好的方法来完成我想要做的事情?

3 个答案:

答案 0 :(得分:1)

使用numpy创建一个n x m矩阵(假设input_set是一个列表)

var dict: [String: AnyObject] = [:]

dict = [
    "test": test,
    "test1": test,
    "test2": test,  
    "test4": test 
]

答案 1 :(得分:1)

好的,如果我理解正确的问题你只想放弃最后几卷(n - k),那么:

  

sample = input_matrix [:k - n]

必须为你做好工作。

答案 2 :(得分:0)

不知道是否还有兴趣,但也许你会这样做:

#select a random 6x6 matrix with items -10 / 10
import numpy as np
mat = np.random.randint(-10,10,(6,6))
print (mat)
#select a random int between 0 and 5
startIdx = np.random.randint(0,5)
print(startIdx)
#extracy submatrix (will be less than 3x3 id the index is out of bounds)
print(mat[startIdx:startIdx+3,startIdx:startIdx+3])