【问题描述】将形如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
以上代码并没有作出优化,自然有其他的办法,仅供参考啦~
本题目就不需要那个循环来行向或者列向的拼接