1.创建一个 5x5 的二维数组,并设置值 1, 2, 3, 4 落在其对角线下方:
结果为:
array([[0, 0, 0, 0, 0],
[1, 0, 0, 0, 0],
[0, 2, 0, 0, 0],
[0, 0, 3, 0, 0],
[0, 0, 0, 4, 0]])
运用函数:np.diag( , k = )
函数解释:会返回一个矩阵的对角线,一般而言默认k=0,当k>0时,表示返回对角线上面的 对角线数值,若k<0,则表示返回对角线下面的对角线数值。比如:
#当k=-1时
import numpy as np
a = np.arange(16).reshape(4,4)
print('-'*10)
print(a)
print('-'*10)
b = np.diag(a,k=-1)
print(b)
#result
# ----------
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]
# [12 13 14 15]]
# ----------
# [ 4 9 14]
#当k=2时
import numpy as np
a = np.arange(16).reshape(4,4)
print('-'*10)
print(a)
print('-'*10)
b = np.diag(a,k=2)
print(b)
#result
----------
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
----------
[2 7]
2.沿横轴分割数组:
运用到函数:np.hsplit( ary, section = )
split这个单词代表的意思就是分割,section表示的就是 将原数组分割成多少份,分割成多少个数组。要注意的是:切割以后得到的数组,形状上与元素组相同:也即是具有相同的shape
比如这儿是:2行6列,那么分割的时候,就会分割成2行的,块数就是3,那么分割之后的每一个矩阵都是2行 2列(一共6列,除以3块)
同样的,还有函数vsplit函数,方向就与hsplit相反。
import numpy as np
harr = np.floor(10 * np.random.random((2, 6)))
print(harr)
print(np.hsplit(harr, 3))
#原array:
[[ 8. 5. 0. 2. 3. 8.]
[ 0. 2. 9. 5. 8. 2.]]
#拆分后:
[array([[ 8., 5.],
[ 0., 2.]]), array([[ 0., 2.],
[ 9., 5.]]), array([[ 3., 8.],
[ 8., 2.]])]



