首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于矩阵中使用索引的循环

用于矩阵中使用索引的循环
EN

Stack Overflow用户
提问于 2022-05-24 00:16:54
回答 1查看 45关注 0票数 0

我写了这段代码:

代码语言:javascript
复制
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,因此代码将变成:

代码语言:javascript
复制
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,您知道如何在索引上创建这个循环吗?提前谢谢你,

EN

回答 1

Stack Overflow用户

发布于 2022-05-24 01:55:35

我们不清楚从哪里得到j2j3,但假设它们都是j1 (如第二个代码块所示):

range(200)添加一个中间循环,并使用该循环的变量动态计算i范围。

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72355986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档