Python 【问题描述】将形如n*m的矩阵,扩展为2n*2m的形式

【问题描述】将形如nm的矩阵,扩展为2n2m的形式,如下图所示。

在这里插入图片描述

【输入形式】元素均为整型的矩阵,保存在文本文件中。
【输出形式】扩展后的矩阵,保存在文本文件中。
【样例输入】

1,2,3

4,5,6

【样例输出】

1,2,3,1,2,3

4,5,6,4,5,6

1,2,3,1,2,3

4,5,6,4,5,6

【样例说明】23的矩阵,扩展成46的矩阵。

依据题意,意思是要将读取的矩阵沿X、Y轴复制(扩展)两次
应当使用np.tile()函数,可以以整个数组的形式复制,注意:重塑可能比较繁琐,np的repeat()函数是对于每个元素的复制有所区别。例如:
示例arr原数组
在这里插入图片描述
repeat函数
在这里插入图片描述
tile函数
在这里插入图片描述
以上就可以看出区别了,tile里的元组((2,2))也可以用列表([2,2])表示沿XY轴都复制两次,默认为沿X轴,当然,也叫沿列的方向和行的方向

故而题目的实现代码为:

import  numpy  as  np
data  =  np.loadtxt('data2.txt',delimiter=',')
result = np.tile(data,(2,2))
np.savetxt('resultarr.txt',result,fmt='%d',delimiter=',')

当然,还可以用拼接函数concatenate、hstack、vstack,应该是使用到循环吧。

测试一下:

import numpy as np
data  =  np.loadtxt('data2.txt',delimiter=',')
result = []
res1 = data
shape_data = data.shape     #获取维度
x = int(shape_data[0])   #定义列(X轴)题目是默认2,下面就使用2,这里是为了说明能够怎么拼接
y = int(shape_data[1])   #定义行(Y轴)

#以下是本题目的代码
for i in range(1):
    res1 = np.concatenate((res1,data),axis = 1)   #使用了concatenate拼接函数

res2 = res1    
for i in range(1):
    res2 = np.concatenate((res1,res2),axis = 0)

result = res2

以上代码并没有作出优化,自然有其他的办法,仅供参考啦~
本题目就不需要那个循环来行向或者列向的拼接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值