美文网首页
HelixMatrix

HelixMatrix

作者: SevenBy | 来源:发表于2018-02-06 14:33 被阅读17079次
HelixMatrix

违父母之命,弃安逸之生活。只身北漂,为我欲为。感谢在我成长中给我制造挫折的人。谢谢清华大学李瑞哥哥,虽一面之缘,仍念感激!喜欢编程,喜欢计算机的朋友,在此我写一个简单算法的例子,初始化一个 N*N 的矩阵,从左上角第一个元素顺时针填充数字,范围1~N^2


二维螺旋矩阵

示例代码如下
      #-*- coding: utf-8 -*-
      import numpy
      def HelixMatrix(n):
      if not isinstance(n,int) or n <= 1:
          raise ValueError('please input a valid number!')
      matrix = numpy.zeros((n,n))
      start = 0
      skip = n-1
      number = 1
      while start < skip:
          # 当向右移动,横坐标不变,纵坐标+1,number+1
          i = start
          while i < skip:
              matrix[start][i] = number
              i += 1
              number += 1
          #print(matrix)
          #当向下移动,纵坐标不变,横坐标+1,number+1
          i = start
          while i < skip:
              matrix[i][skip] = number
              i += 1
              number += 1
          #print(matrix)
          #当向左移动,横坐标不变,纵坐标-1,number+1
          i = skip
          while i > start:
              matrix[skip][i] = number
              i -= 1
              number += 1
          #print(matrix)
          #当向上移动,纵坐标不变,横坐标-1,number+1
          i = skip
          while i > start:
              matrix[i][start] = number
              i -= 1
              number += 1
          start += 1
          skip -= 1
      #当二位矩阵的维数为奇数,最中间也就是最后一个值为0的元的值应该赋值n*n
      if n%2 != 0:
          matrix[int((n-1)/2)][int((n-1)/2)] = n*n
      return matrix
      print (HelixMatrix(6))
运行结果如下:
      [ 1.  2.  3.  4.  5.  6.]
      [20. 21. 22. 23. 24.  7.]
      [19. 32. 33. 34. 25.  8.]
      [18. 31. 36. 35. 26.  9.]
      [17. 30. 29. 28. 27. 10.]
      [16. 15. 14. 13. 12. 11.]

又逢周末,晚安

相关文章

  • HelixMatrix

    违父母之命,弃安逸之生活。只身北漂,为我欲为。感谢在我成长中给我制造挫折的人。谢谢清华大学李瑞哥哥,虽一面之缘,仍...

网友评论

      本文标题:HelixMatrix

      本文链接:https://www.haomeiwen.com/subject/diegzxtx.html