我是一个长期的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中的思维方式完全不同。
谢谢你的帮助
目前没有回答
相关问题 更多 >
编程相关推荐