我有一个文件,每行有一个参数:
a1
b1
c1
a2
b2
c2
...
参数是字符行(不是数字)
我需要将其加载到2D数组以进行进一步的操作。 到目前为止,我设法将此文件上传到1D数组:
ParametersRaw = []
with open(file1) as fh:
ParametersRaw = fh.readlines()
fh.close()
NumberOfColumns = 7
NumberOfRows = len(ParametersRaw)/NumberOfColumns
Parameters = [[],[]]
i=0
j=0
k=0
while (i < NumberOfRows):
while (j < NumberOfColumns):
k = (i*NumberOfColumns)+j
Parameters[i][j] = ParametersRaw[k]
j = j + 1
i = i + 1
j = 0
它在Parameters[i][j] = ParametersRaw[k]
行失败,错误:
IndexError:索引0超出轴0,大小为0
如果填充1D数组,我会使用append()方法。 但是在2D的情况下,我失去了如何应用append()。
列昂尼德
答案 0 :(得分:0)
我不知道这是否能解答您的问题,但如果您从
开始parameters = [[''], ['']]
然后
parameters[0][0]
是''
您拥有的内容Parameters = [[],[]]
是一个包含两个空列表的列表。由于这些列表是空的,因此您无法将其编入索引。
答案 1 :(得分:0)
你仍然可以使用追加,但你必须首先为每个值启动空列表。
viewPager.setAdapter(new CustomFragmentPagerAdapter(getChildFragmentManager()));
然后,您可以在每个项目上调用>>> NumberOfRows = 5
>>> [[] for __ in range(NumberOfRows)]
[[], [], [], [], []]
:
append
请注意parameters = [[] for __ in range(NumberOfRows)]
for i in range(0,NumberOfRows,NumberOfColumns):
for j in range(NumberOfColumns):
k = i+j
Parameters[i//NumberOfColumns].append(ParametersRaw[k])
的使用,与range(0,NumberOfRows,NumberOfColumns):
i+=NumberOfColumns
重复相同
我希望这可以按你想要的方式工作!我无法测试它,因为我没有你的任何数据所以只要评论是否有错误:)
答案 2 :(得分:0)
谢谢大家。这是最后一段代码,它给我带来了很多麻烦,但现在以我想要的方式工作:
UNIQUE
CU
答案 3 :(得分:0)
如果参数列表的大小是numCols的倍数,那么你可以使用numpy在几行代码中完成。
import numpy as np
parameters = np.loadtxt("./filename.txt", unpack=True, dtype=str)
numCols = 7
numRows = len(parameters) / numCols
parameters = np.reshape(parameters, (numRows, numCols))