说明:个人学习记录,仅供参考。
操作系统:window10 x64
IDE:Pycharm 2017.2.2
Python版本:3.6.2
接上篇
1、矩阵按行、按列拼接
import numpy as np
a = np.floor(10 * np.random.random((2, 2)))
'''
[[ 1. 1.]
[ 6. 3.]]
'''
print(a)
b = np.floor(10 * np.random.random((2, 2)))
'''
[[ 3. 7.]
[ 7. 0.]]
'''
print(b)
# 按行拼接,也即竖着拼接,把b放在a的下面
'''
[[ 1. 1.]
[ 6. 3.]
[ 3. 7.]
[ 7. 0.]]
'''
print(np.vstack((a, b)))
# 按列拼接,也即横着拼接,把b放在a的后面
'''
[[ 1. 1. 3. 7.]
[ 6. 3. 7. 0.]]
'''
print(np.hstack((a, b)))
2、横方向竖着分割
import numpy as np
a = np.floor(10 * np.random.random((2, 12)))
'''
[[ 5. 3. 5. 4. 5. 7. 4. 1. 0. 9. 4. 0.]
[ 9. 8. 5. 2. 4. 5. 4. 3. 8. 0. 7. 1.]]
'''
print(a)
# 横方向分割,a为要分割的矩阵,3表示分割为3份,对应hstack方法。
# hstack:将下面的拿到后面 hsplit:将后面的拿到下面
'''
[array([[ 5., 3., 5., 4.],
[ 9., 8., 5., 2.]]), array([[ 5., 7., 4., 1.],
[ 4., 5., 4., 3.]]), array([[ 0., 9., 4., 0.],
[ 8., 0., 7., 1.]])]
'''
print(np.hsplit(a, 3))
# 在第三列后面切一下,在第四列后面切一下,两刀分三块
'''
[array([[ 5., 3., 5.],
[ 9., 8., 5.]]), array([[ 4.],
[ 2.]]), array([[ 5., 7., 4., 1., 0., 9., 4., 0.],
[ 4., 5., 4., 3., 8., 0., 7., 1.]])]
'''
print(np.hsplit(a, (3, 4)))
3、竖方向横着分割
import numpy as np
a = np.floor(10 * np.random.random((12, 2)))
'''
[[ 8. 8.]
[ 9. 2.]
[ 3. 0.]
[ 5. 1.]
[ 7. 3.]
[ 7. 4.]
[ 5. 1.]
[ 2. 9.]
[ 1. 3.]
[ 1. 3.]
[ 2. 6.]
[ 9. 3.]]
'''
print(a)
# 竖方向横着分割,a为要分割的矩阵,3表示分割为3份。
'''
[array([[ 8., 8.],
[ 9., 2.],
[ 3., 0.],
[ 5., 1.]]), array([[ 7., 3.],
[ 7., 4.],
[ 5., 1.],
[ 2., 9.]]), array([[ 1., 3.],
[ 1., 3.],
[ 2., 6.],
[ 9., 3.]])]
'''
print(np.vsplit(a, 3))
# 在第三行后面切一刀,在第四行后面切一刀,两刀切成3块
'''
[array([[ 8., 8.],
[ 9., 2.],
[ 3., 0.]]), array([[ 5., 1.]]), array([[ 7., 3.],
[ 7., 4.],
[ 5., 1.],
[ 2., 9.],
[ 1., 3.],
[ 1., 3.],
[ 2., 6.],
[ 9., 3.]])]
'''
print(np.vsplit(a, (3, 4)))
这个横着切、竖着切,就跟切水果一样,可以好好体会一下,别弄混了。
4、查找并修改矩阵特定元素
import numpy as np
a = np.array(([3, 2, 1], [2, 5, 7], [4, 7, 8]))
# 查找到值为2 的元素,并将所有符合条件的元素值置为0
a[a == 2] = 0
'''
[[3 0 1]
[0 5 7]
[4 7 8]]
'''
print(a)