我是靠谱客的博主 安静荷花,最近开发中收集的这篇文章主要介绍python 对矩阵进行复制操作 np.repeat 与 np.tile区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部