问题描述
我是一个很长一段时间的 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 (将#修改为@)