抽时间,持续更新ing
假设:m是行,n是列,如何优雅地创建二维数组。
visited = [[False for i in range(n)] for j in range(m)]
进行值的复制,与下面这行代码可进行对比。
visted = [[False] * n ] * m
Note:这种方式是地址赋值,没有进行内容的复制,当修改了二维数组中的值,则会将所有行的这个位置的值进行修改,因为他的本质是对一维数组做复制。
e.g., visited = [[1,2,3],[1,2,3]],修改, visited[0][0] = 6, 则先修改[1,2,3] 为 [6,2,3],然后进行 * 2的运算,最终的结果为 [[6,2,3], [6,2,3]],和预料大不相同,切记切记。
python有sort和sorted两个函数,sort在原数组上进行排序,sorted会创建新的副本进行排序,sorted的功能更多。 主要想介绍用一个数组的索引来对另一个数组进行排序。
2.1.1 sort的定义如下:
sort(*, key=None, reverse=False)
# e.g.
a = [1,3,2,1]
a.sort()
sort只能用于list,Note:直接在原来的数组上进行修改。
2.1.2 sorted定义如下:
sorted(iterable, *, key=None, reverse=False)
其中,iterable为可迭代对象,包括list,字典等等,key为排序的关键字, 可以采用字典的key或者value,reverse表示是否反转。
2.1.3 用一个数组的索引来对另一个数组进行排序
x = [2, 1, 4, 3, 5]
y = [2, 1, 4, 3, 5]
x_sort = sorted(x)
x_index = sorted(range(0, len(x)), key = lambda k: x[k])
y_sort = [y[i] for i in x_index]
print(x_sort, x_index, y_sort)
numpy存在sort和argsort两个函数,sort返回排序的值,argsort返回排序的索引,然后,利用x的索引对y进行排序。
import numpy as np
# init x and y
x = [2, 1, 4, 3, 5]
y = [2, 1, 4, 3, 5]
# list to numpy
x = np.array(x)
y = np.array(y)
# sort for x
x_sort = np.sort(x)
x_index = np.argsort(x)
# sort for y
y_sort = y[x_index]
去掉matplotlib绘图后的坐标系以及坐标系周围的空白
# 取消轴
plt.axis("off")
# 取消周围的空白
plt.savefig('./BEV_fill/{}.jpg'.format(kk), bbox_inches='tight', pad_inches=0)