概述
python 对矩阵进行复制操作 np.repeat 与 np.tile区别
####二者区别
二者执行的是均是复制操作;
np.repeat:复制的是多维数组的每一个元素;axis来控制复制的行和列
np.tile:复制的是多维数组本身;
import numpy as np
通过help 查看基本的参数
help(np.repeat)
help(np.tile)
####案例对比
np.repeat
x = np.arange(1, 5).reshape(2, 2)
print(x)
[[1 2]
[3 4]]
print(np.repeat(x, 2))
[1 1 2 2 3 3 4 4]
对数组中的每一个元素进行复制
除了待重复的数组之外,只有一个额外的参数时,高维数组也会 flatten 至一维
c = np.array([1,2,3,4])
print(np.tile(c,(4,2)))
[[1 2 3 4 1 2 3 4]
[1 2 3 4 1 2 3 4]
[1 2 3 4 1 2 3 4]
[1 2 3 4 1 2 3 4]]
当然将高维 flatten 至一维,并非经常使用的操作,也即更经常地我们在某一轴上进行复制,比如在行的方向上(axis=1),在列的方向上(axis=0):
print(np.repeat(x, 3, axis=1))
[[1 1 1 2 2 2]
[3 3 3 4 4 4]]
print(np.repeat(x, 3, axis=0))
[[1 2]
[1 2]
[1 2]
[3 4]
[3 4]
[3 4]]
当然更为灵活地也可以在某一轴的方向上(axis=0/1),对不同的行/列复制不同的次数:
print(np.repeat(x, (2, 1), axis=0))
[[1 2]
[1 2]
[3 4]]
print(np.repeat(x, (2, 1), axis=1))
[[1 1 2]
[3 3 4]]
#####np.tile
python numpy 下的 np.tile有些类似于 matlab 中的 repmat函数。不需要 axis 关键字参数,仅通过第二个参数便可指定在各个轴上的复制倍数。
a = np.arange(3)
print(a)
[0 1 2]
print(np.tile(a, 2))
[0 1 2 0 1 2]
print(np.tile(a, (2, 2)))
[[0 1 2 0 1 2]
[0 1 2 0 1 2]]
第二个参数便可指定在各个轴上的复制倍数。
b = np.arange(1, 5).reshape(2, 2)
print(b)
[[1 2]
[3 4]]
print(np.tile(b, 2))
[[1 2 1 2]
[3 4 3 4]]
print(np.tile(b, (1, 2)))
[[1 2 1 2]
[3 4 3 4]]
最后
以上就是安静荷花为你收集整理的python 对矩阵进行复制操作 np.repeat 与 np.tile区别的全部内容,希望文章能够帮你解决python 对矩阵进行复制操作 np.repeat 与 np.tile区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复