np.tile()和np.repeat()

欢迎访问我的个人主页
np.tile()和np.repeat()都可以对array进行重复操作,但np.tile()是以axis为最小单位(axis-wise)进行重复的,而np.repeat()是以element为最小单位(element-wise)进行重复的

np.tile(A,reps)

输入: A是数组,reps是个list,reps的元素表示对A的各个axis进行重复的次数
返回: 一个数组,维度的数量等于max(A.ndim,len(reps)),注意不要混淆A.ndim和A.shape
有两种特殊情况:

  1. A.ndim < len(reps), 此时需要调整A的维度使得A.ndim = len(reps),即添加长度为1的维度,注意:新的维度在原维度的前面,比如原来的A.shape是(3,5),调整后是(1,3,5)
  2. A.ndim > len(reps), 此时需要增加list的长度,使得A.ndim = len(reps),即在reps的最前面增加元素1,比如原来的list是[2,2],增加长度后是[1,2,2]

官方示例:

# 示例1,正常情况
a = np.array([0, 1, 2])
# 将axis=0重复2次
np.tile(A=a, reps=2)
# array([0, 1, 2, 0, 1, 2])

# 示例2,特殊情况1:A.ndim < len(reps)
a = np.array([0, 1, 2])
# 将a.shape调整至(1,3),然后将axis=0重复2次,将axis=1重复2次
np.tile(A=a, reps=(2, 2))
#array([[0, 1, 2, 0, 1, 2], [0, 1, 2, 0, 1, 2]])

# 示例3,特殊情况1:A.ndim < len(reps)
a = np.array([0, 1, 2])
# 将a.shape调整至(1,1,3),然后将axis=0重复2次,将axis=1重复1次,将axis=2重复2次
np.tile(A=a, reps=(2, 1, 2))
#array([[[0, 1, 2, 0, 1, 2]], [[0, 1, 2, 0, 1, 2]]])

# 示例4,特殊情况2:A.ndim > len(reps)
b = np.array([[1, 2], [3, 4]])
# 将reps=[2]调整至[1,2],然后将axis=0重复1次,将axis=1重复2次
np.tile(A=b, reps=2)
#array([[1, 2, 1, 2], [3, 4, 3, 4]])

# 示例5,正常情况
b = np.array([[1, 2], [3, 4]])
# 将axis=0重复两次,将axis=1重复1次
np.tile(A=b, reps=(2, 1))
#array([[1, 2], [3, 4], [1, 2], [3, 4]])

# 示例6,特殊情况1:A.ndim < len(reps)
c = np.array([1,2,3,4])
# 将c.shape调整至(4,1),然后将axis=0重复4次,将axis=1重复1次
np.tile(A=c, reps=(4,1))
# array([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]])
np.repeat(a, repeats, axis=None)

输入: a是数组,repeats是各个元素重复的次数(repeats一般是个标量,稍复杂点是个list),在axis的方向上进行重复
返回: 如果不指定axis,则将重复后的结果展平(维度为1)后返回;如果指定axis,则不展平
官方示例:

# 示例1,展平
# 将3重复4次
np.repeat(a=3, repeats=4)
# array([3, 3, 3, 3])

# 示例2,展平
# 每个元素都重复2次,并展平后输出
x = np.array([[1,2],[3,4]])
np.repeat(a=x, repeats=2)
# array([1, 1, 2, 2, 3, 3, 4, 4])

#示例3,不展平
x = np.array([[1,2],[3,4]])
# 沿着axis=1方向重复,将axis=1方向上的每个元素重复3次
np.repeat(a=x, repeats=3, axis=1)
#array([[1, 1, 1, 2, 2, 2], [3, 3, 3, 4, 4, 4]])

#示例3,不展平
x = np.array([[1,2],[3,4]])
# 沿着axis=0方向重复,将axis=0方向上的第0个元素重复1次,第1个元素重复2次
np.repeat(a=x, repeats=[1, 2], axis=0)
# array([[1, 2], [3, 4], [3, 4]])
np.tile函数是NumPy库中的一个函数,用于将数组沿指定的维度进行复制和拼接。它的作用是将一个数组按照指定的重复次数在指定的维度上进行复制,并将复制后的数组进行拼接。\[1\] 例如,如果我们有一个数组arr = np.array(\[\[1, 2, 3\], \[4, 5, 6\]\]),我们可以使用np.tile(arr, 2)来将该数组在第二个维度上复制两次,得到一个新的数组arr1。打印arr1的结果为\[\[1 2 3 1 2 3\],\[4 5 6 4 5 6\]\],而arr1的形状为(2, 6)。\[1\] 另外,np.tile函数还可以接受一个元组作为重复次数的参数,用于指定在每个维度上的重复次数。例如,np.tile(arr, (1, 2, 1, 3))表示在第二个维度上复制两次,在第四个维度上复制三次,得到一个新的数组arr1。打印arr1的结果为\[\[\[\[1 2 3 1 2 3 1 2 3\] \[4 5 6 4 5 6 4 5 6\]\] \[\[1 2 3 1 2 3 1 2 3\] \[4 5 6 4 5 6 4 5 6\]\]\]\],而arr1的形状为(1, 2, 2, 9)。\[3\] 总结来说,np.tile函数可以用于在指定的维度上复制和拼接数组,可以通过指定重复次数或元组来控制复制的方式。 #### 引用[.reference_title] - *1* *3* [np.tile()函数,numpy.tile()函数的通俗的详细解释,python中有哪些函数可扩展数组数据?np.repeat/np....](https://blog.csdn.net/PSpiritV/article/details/123266458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【python函数】np.tile()函数用法解析](https://blog.csdn.net/qq_43426908/article/details/121142811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值