将Matlab代码转换为python.索引器错误:索引-1超出大小为0的轴0的界限

for i = 1:N
            for j=1:N
                s = zeros(L2,L2);
                sX = zeros(L2,L2);
                sSS= Y((i-1)*L2+1:i*L2,(j-1)*L2+1:j*L2);
                BI{i,j} = sSS;
                

Python

for i in range(N):
        for j in range(N):
            s = zeros(N, N);
            sX = zeros(N,N);
            sSS =Y[arange(dot((i - 1),L2) + 1,dot(i,L2)),arange(dot((j - 1),L2) + 1,dot(j,L2))]
            BI [i,j] = sSS
           

索引器错误:索引-1超出大小为0的轴0的界限.根据BI[i,j]=sSS的线.

推荐答案

MATLAB索引(i-1)*L2+1:i*L2,(j-1)*L2+1:j*L2简单地转换为Python的索引i*L2:(i+1)*L2, j*L2:(j+1)*L2.您应该在循环外部初始化BI,在循环内部初始化ssX.此外,Y未在循环外部定义.

注意,您不应该像这样从numpy导入所有内容,它应该是import numpy as np,并且可以在任何需要的地方使用np.func(..).BI在MATLAB中定义为更接近cell array的列表.

from numpy import *    # not recommended to import everything

N = L2 = 5
Y = random.rand(100,100)
BI = []
for i in range(N):
    BI.append([])
    for j in range(N):
        # s = zeros((L2,L2))  # does nothing
        # sX = zeros((L2,L2)) # does nothing
        sSS = Y[i*L2:(i+1)*L2, j*L2:(j+1)*L2]
        BI[i].append(sSS)

Python相关问答推荐

对某些列的总数进行民意调查,但不单独列出每列

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

如何在python polars中停止otherate(),当使用when()表达式时?

实现自定义QWidgets作为QTimeEdit的弹出窗口

使用Python更新字典中的值

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

Tkinter菜单自发添加额外项目

如何使regex代码只适用于空的目标单元格

使用Python从rotowire中抓取MLB每日阵容

在代码执行后关闭ChromeDriver窗口

人口全部乱序 - Python—Matplotlib—映射

Odoo16:模板中使用的docs变量在哪里定义?

Python pint将1/华氏度转换为1/摄氏度°°

使用嵌套对象字段的Qdrant过滤

有了Gekko,可以创建子模型或将模型合并在一起吗?

PYTHON中的selenium不会打开 chromium URL

Pandas 删除只有一种类型的值的行,重复或不重复

为什么在不先将包作为模块导入的情况下相对导入不起作用

Pandas查找给定时间戳之前的最后一个值

Pandas:新列,从列表中采样,基于列值