需要帮助在Python(Java)中声明和分配具有不同元素数的多维数组吗

2024-09-28 01:22:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个长期的java用户,潜心研究python。
我正在寻找一种创建多维数组的方法,这些数组可能没有相同数量的元素,部分或全部元素直到运行时才知道

在java中,我会分配一个名为runSet的三维数组,如下所示:

double[][][] runSet = new double[5][][];

int randomInt = genRandInt();  // Returns a random integer between 0 and 101.

for(int i = 0; i < 4; i++) runSet[i] = getRuns(randomInt);  // Returns double[randomInt][ToBeDetermined]

// ------------------------------------------------------------------------------

public double[][] getRuns(int num)
{  
  double[][] array2D = new double[num][];
  for(int i = 0; i< num; i++) array2D[i] = genRandArray(); // returns double[] of random values with length between 0 and 1001.
  
  return array2D; // Returns double[num][Varying Length]
} // end GetRuns()

没问题,这很好用。 但是,使用python我也希望这样做,我不知道如何正确地分配元素数量未知的数组。我能想到的最好的办法是:

import numpy as np
    
runSet = np.empty([5, ]) # <--- Does NOT throw an error.
randomInt = genRandInt()   # Returns a random integer between 0 and whatever.

i = 0
while i < 4:
   runSet[i] = getRuns(randomInt)  # Returns [][] (double[randomInt][ToBeDetermined] in java speak)
   i += 1

#-------------------------------------------------
    
def getRuns(num) 
    array2D = np.empty([num, ]) # <-- Does NOT throw an error.
    i = 0
    while i < num:
         array2D[i] = genRandArray(); # Returns double[] of random values with a random LENGTH as well.
         i += 1
          
    return array2D; // Returns double[num][Varying Length]
    
# end GetRuns()

在python版本的genRandArray()中,我返回以下(示例随机)语句:

return [12.4, 6.4, 8.0, 7.9, 8.2, 6.3, 8.8, 3.14, 2.345, 66.828, 12.0]

在这两个地方我都分配runSet[I]&;array2D[i],我现在知道我会得到类似“顺序列表被添加到单个…”的错误

问题1):也许数组形式更适合返回

问题2):我离得很近吗?
我有一种感觉,我可能用了一种完全错误的方式来处理这个问题,因为python中的数组思维与我在java中的思维方式完全不同。 谢谢你的帮助


Tags: and元素random数组javabetweennumreturns

热门问题