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

问题描述

我是一个很长一段时间的 Java 用户,深入研究 Python。
我正在寻找一种方法来创建多维数组,这些数组可能具有不同数量的元素,其中一些或全部在运行时之前是未知的。

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

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()

在 genRandarray(),python 版本中,我返回此(示例随机)语句:

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):我什至接近了吗?
我有一种感觉,我可能会以完全错误的方式来解决这个问题,因为从我接受过的在 java 中思考它的训练的方式来看,python 中的数组思维似乎完全不合时宜。 感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)