我写了这段代码:
N=20
matrix = numpy.zeros([3*N,N])
for j1 in range (N):
for i1 in range (0*N, 1*N):
matrix[i1,j1] = numpy.array(readFile['alpha'])[0,0,i1-0*N,j1])
for i2 in range(1*N, 2*N):
matrix[i2,j2] = numpy.array(readFile['alpha'])[0,0,i2-1*N,j1])
for i3 in range (2*N, 3*N):
matrix[i3,j3] = numpy.array(readFile['alpha'])[0,0,i3-2*N,j1])
print(matrix)注: readFile正在使用h5py库读取文件。我对此没意见!
我的问题是如何简化这段代码(我只编写了i1、i2、i3,但在我的示例中有i1、.、i200),我要寻找的不是编写关于i的所有这些行,而是将索引定义为index = 0,因此代码将变成:
matrix = numpy.zeros([3*N,N])
index = 0
for j1 in range (N):
for i_(index+1) in range (index*N, (index+1)*N):
matrix[i_(index+1),j1] = numpy.array(readFile['alpha'])[0,0,i_[index+1]-index*N,j1])这些行允许用索引= 0填充matrixi1,j1。当索引=1时,我将获得matrixi2,j1,而当索引=2i将获得matrixi3,j1。因此,我想我需要一个循环索引= index +1,您知道如何在索引上创建这个循环吗?提前谢谢你,
发布于 2022-05-24 01:55:35
我们不清楚从哪里得到j2和j3,但假设它们都是j1 (如第二个代码块所示):
向range(200)添加一个中间循环,并使用该循环的变量动态计算i范围。
N = 20
matrix = numpy.zeros([3 * N, N])
for j1 in range(N):
for i in range(200):
for i1 in range(i * N, (i + 1) * N):
matrix[i1, j1] = numpy.array(readFile['alpha'])[0, 0, i1 - i * N, j1]现在,只要更改第二个循环的range,您的200就可以变成2000。
https://stackoverflow.com/questions/72355986
复制相似问题