java - 需要帮助在 Python (v Java) 中声明和分配具有不同元素数量的多维数组
问题描述
我是一个长期潜入 python 的 java 用户。
我正在寻找一种创建多维数组的方法,该数组可能具有不同数量的元素,部分或全部在运行时才知道。
在 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):我什至接近吗?
我有一种感觉,我可能会以完全错误的方式来解决这个问题,因为在 python 中的数组思考似乎完全不同于我在 java 中接受过的思考它的方式。谢谢你的帮助!