python实现了一个顺时针元素递增矩阵

python 复制代码
import numpy as np

m = 7
if m % 2 == 0:
    center_x = m // 2-1
    center_y = m // 2-1
    n=m+1
else:
    center_x = m // 2
    center_y = m // 2
    n=m+ 1

print(center_x, center_y)

mr = np.zeros([m,m])
count = 1
for i in range(1, n ):
    try:

        if i == 1:
            print(i)
            mr[center_x][center_y] = count

        if i % 2 == 1:
            for _ in range(i):
                if mr.max() >= m * m:
                    break
                center_x += 1
                count += 1
                mr[center_y][center_x] = count

            for _ in range(i):
                if mr.max() >= m * m:
                    break
                center_y += 1
                count += 1
                mr[center_y][center_x] = count
        else:
            for _ in range(i):
                if mr.max() >= m * m:
                    break
                center_x -= 1
                count += 1
                mr[center_y][center_x] = count
            for _ in range(i):
                if mr.max() >= m * m:
                    break
                center_y -= 1
                count += 1
                mr[center_y][center_x] = count
    except:
        pass

mr=mr**2*2-mr
sum_data=0
for i,row in enumerate(mr):
    sum_data+=row[i]
print(str(int(sum_data)))

智障瞎解释

这段代码是用Python和NumPy库编写的,它的主要目的是创建一个特定的二维数组,然后计算并打印该数组的特定行或列的和。

首先,代码定义了一个变量m,其值为7。然后根据m是否为偶数,确定了center_x和center_y的值,这两个变量表示二维数组的中心坐标。

接下来,代码创建了一个m行m列的二维数组mr,所有元素初始化为0。

然后,代码开始填充mr。它从1开始,然后每次增加2,直到n(如果m是偶数,n=m+1;否则n=m+1)。对于每个i,代码根据一些规则来更新mr的值。

具体来说,当i=1时,代码将1放在mr的中心的元素上。当i为奇数时,代码每次向右和向下移动中心坐标,并增加计数器count,然后将count的值放在新的位置上。当i为偶数时,代码每次向左和向上移动中心坐标,并增加计数器count,然后将count的值放在新的位置上。

在填充完mr后,代码将所有元素平方,乘以2,然后减去原始的mr。这可能是为了对数组进行某种变换。

然后,代码遍历数组的每一行和每一列,并计算它们的和。最后,它将所有的和相加,并将结果打印出来。

这段代码似乎是在执行某种特殊的填充操作(根据填充规则基于奇偶性决定是向左下方还是右上方移动)并在完成填充后进行特定的操作(元素平方、乘以2然后减去原始值)。最后计算特定行或列的和。

相关推荐
jay神1 小时前
深度学习的优化器应该怎么选?
人工智能·python·深度学习·毕业设计·课程设计
程序喵大人1 小时前
【C++进阶】STL算法与函数对象 - 09 函数对象保存状态并复用规则
开发语言·c++·算法·stl·函数对象
hsjiasb7 小时前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
丰锋ff8 小时前
3.1 Qt事件之事件处理器
开发语言·qt
多弗朗皮卡丘8 小时前
C语言梦开始的地方7:函数
c语言·开发语言
月华路9 小时前
G1 垃圾回收:脏卡队列、记忆集与并发精化线程机制
java·开发语言
XLYcmy9 小时前
京东 算法实习一面 下+手撕
c++·python·llm·概率论·数据处理·训练·codebert
虎头金猫9 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
从零开始学习人工智能9 小时前
WSL2部署CUDA12+cuDNN9踩坑实录:ONNX Runtime GPU推理环境搭建全流程
python
gugucoding9 小时前
47. 【Java】Java内存模型(JMM)与可见性
java·开发语言