前言
在创建的数组的时候给初始化了值,也可以在创建之后,针对特定的元素进行再次赋值,就是修改对应元素的值
一般赋值
知道元素位置就能修改
import numpy as np
a = np.zeros((5,5))
a[0][0] = 1
a[1][1] = 2
a[2][2] = 3
a[3][3] = 4
a[4][4] = 5
print(a)
'''
[[1. 0. 0. 0. 0.]
[0. 2. 0. 0. 0.]
[0. 0. 3. 0. 0.]
[0. 0. 0. 4. 0.]
[0. 0. 0. 0. 5.]]
'''
使用 NumPy 也能将上面的代码换成下方的写法,会得到同样的结果
import numpy as np
a = np.zeros((5,5))
a[0,0] = 1
a[1,1] = 2
a[2,2] = 3
a[3,3] = 4
a[4,4] = 5
print(a)
'''
[[1. 0. 0. 0. 0.]
[0. 2. 0. 0. 0.]
[0. 0. 3. 0. 0.]
[0. 0. 0. 4. 0.]
[0. 0. 0. 0. 5.]]
'''
批量赋值
如果遇到多个元素同时赋值,使用 numpy 进行赋值,就不需要通过循环去赋值,下面例子一次性,把第一列的 2、3、4,赋值为 100
import numpy as np
a = np.zeros((3,5))
a[0,[2,3,4]]] = 100
print(a)
'''
[[ 0. 0. 100. 100. 100.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
'''
将上面的赋值改为 slice 切片的方式赋值
import numpy as np
a = np.zeros((3,5))
a[0,2:5] = 100
print(a)
'''
[[ 0. 0. 100. 100. 100.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
'''
延伸同样的原理,下面的方法使用两个串列切片,就能在 10X10 的数组里吗,将中间 6X6 的元素内容替换为 1
小结
通过 numpy 函数库,能够快速的针对数组中某个范围的元素进行赋值,大幅度减少循环的使用,提高程序编写效率以及增强代码的可读性