在python中创建没有作为参数传递的aubarrays的子数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中创建没有作为参数传递的aubarrays的子数组相关的知识,希望对你有一定的参考价值。

我有一个像这样的大型100x15数组:

[a b c d e f g h i  j  k  l  m  n  o] 
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
.
.
.(Up to 100 rows)

我想使用一个函数选择一部分数据到子集中,该函数有一个参数'k',其中'k'表示要生成的子集的no,比如说k = 5表示数据属性被分成3个子集如下:

[a b c d e] [f g h i j]  [k  l  m  n  o] 
[1 2 3 4 5] [6 7 8 9 10] [11 12 13 14 15]
[1 2 3 4 5] [6 7 8 9 10] [11 12 13 14 15]
[1 2 3 4 5] [6 7 8 9 10] [11 12 13 14 15]
[1 2 3 4 5] [6 7 8 9 10] [11 12 13 14 15]
.
.
.(Up to 100 rows)

它们存储在不同的数组中。我想用python实现它。我已经部分实现了这一点。任何人都可以实现这个并在答案中提供代码吗?

内循环的部分逻辑

given k
set start_index = 0
end_index = length of array/k = increment

for j from start_index to end_index
  start_index=end_index + 1
  end_index = end_index + increment
  //newarray[][] (I'm not sure abt here)

谢谢。

答案

这将返回一个columnize = 2的矩阵数组,适用于k = 2:

import numpy as np

def portion(mtx, k):

    array = []
    array.append( mtx[:, :k])

    for i in range(1, mtx.shape[1]-1):

        array.append( mtx[:, k*i:k*(i+1)])

    return array[:k+1]

mtx = np.matrix([[1,2,3,10,13,14], [4,5,6,11,15,16], [7,8,9,12,17,18]])
k = 2
print(portion(mtx, k))
另一答案

不幸的是我必须自己做,这是python中的逻辑代码。无论如何,感谢@astaning的尝试。

def build_rotationtree_model(k):
 mtx =np.array([[2.95,6,63,23],[2,53,7,79],[3.57,5,65,32],[3.16,5,47,34],[21,2.58,4,46],[3.1,2.16,6,22],[3.5,3.27,3,52],[12,2.56,4,42]])    
 #Length of attributes (width of matrix)
 a = mtx.shape[1]
 newArray =[[0 for x in range(k)] for y in range(len(mtx))]
 #Height of matrix(total rows)
 b = mtx.shape[0]
 #Seperation limit
 limit = a/k
 #Starting of sub matrix
 start = 0
 #Ending of sub matrix
 end = a/k
 print(end)
 print(a)

 #Loop
 while(end != a):
    for i in range(0,b-1):
        for j in range(start,int(end)):
            newArray[i][j] = mtx[i][j]
        print(newArray[i])  
    #Call LDA function and add the result to Sparse Matrix
    #sparseMat = LDA(newArray) SHould be inside a loop
    start = end + 1
    end = end + limit

以上是关于在python中创建没有作为参数传递的aubarrays的子数组的主要内容,如果未能解决你的问题,请参考以下文章

在 Postgresql 中创建一个具有多列作为参数的函数

在python中创建默认参数

在 python 中创建切片对象

在 C++ 中创建对象并将指针传递给 python

在 Tkinter Python 中创建全局画布

使用参数在oracle中创建视图[重复]