我正在尝试编写python函数以水平或垂直翻转矩阵。要编写一个Python函数matrixflip(m,d),它将二维矩阵m和方向d作为输入,其中d为“ h”或“ v”。如果d =='h',则函数应返回水平翻转的矩阵。如果d =='v',则函数应重新调整垂直翻转的矩阵。对于d的任何其他值,函数应不变地返回m。在所有情况下,参数m都应不受该函数的干扰。
import numpy as np
def matrixflip(m,d):
m = myl
myl = np.array([[1, 2], [3, 4]])
if d=='v':
return np.flip(contour, axis=0)
elif d=='h':
return np.flip(contour, axis=1)
我希望输出为
>>> myl = [[1,2],[3,4]]
>>> myl
[[1, 2], [3, 4]]
>>> matrixflip(myl,'h')
[[2, 1], [4, 3]]
>>> myl
[[1, 2], [3, 4]]
>>> matrixflip(myl,'v')
[[3, 4], [1, 2]]
>>> myl
[[1, 2], [3, 4]]
答案 0 :(得分:1)
我发现可能是问题所在,当您将列表分配给另一个列表m = myl
时,您并没有创建该列表的新副本来使用,因此对m的任何更改都会影响myl。通过将其替换为tempm = m.copy()
,您将获得可以随心所欲的列表的新版本。以下应该可以很好地工作:
def matrixflip(m,d):
tempm = m.copy()
if d=='h':
for i in range(0,len(tempm),1):
tempm[i].reverse()
elif d=='v':
tempm.reverse()
return(tempm)
答案 1 :(得分:1)
试试这个:
dupes = {f'{col}_': int(col) for col in df.columns if col.isdigit()}
df = df.assign(**dupes)
df = df.reindex(reversed(sorted(df.columns)), axis=1).rename(columns=dupes)
# name hobby date country 5 5 20 20 15 15 10 10
# 0 Toby Guitar 2020-01-19 Brazil 5 0.1245 20 0.2264 15 0.7763 10 0.2543
# 1 Linda Cooking 2020-03-05 Italy 5 0.5411 20 0.3342 15 Nan 10 0.2213
# 2 Ben Diving 2020-04-02 USA 5 0.8843 20 0.2122 15 0.4486 10 0.2333
答案 2 :(得分:0)
def matrixflip(m,d): 如果d =='h': m =甲基 对于范围(0,len(m),1)中的i: m [i] .reverse() 回报(米) elif d =='v': m =甲基 m.reverse() 回报(米) 其他: return(m)
答案 3 :(得分:0)
尝试这个
def matrixflip(a,b):
temp=[]
for i in range(len(a)):
temp=temp+[a[i][:]]
if b=='h':
for i in range(len(temp)):
temp[i].reverse()
return(temp)
elif b=='v':
temp.reverse()
return(temp)
答案 4 :(得分:0)
def matrixflip(a,b):
temp=[]
for i in range(len(a)):
temp=temp+[a[i][:]]
if b=='h':
for i in range(len(temp)):
temp[i].reverse()
i=i+1
return temp
elif b=='v':
temp.reverse()
return(temp)
答案 5 :(得分:0)
def matrixflip(a,b):
temp=[]
for i in range(len(a)):
temp=temp+[a[i][:]]
if b=='h':
for i in range(0,len(temp),1):
temp[i].reverse()
elif b=='v':
temp.reverse()
return(temp)
答案 6 :(得分:0)
有趣的问题。您可以使用numpy函数翻转。
import numpy as np
myl = [[1,2],[3,4]]
对于水平翻转,请使用索引0:
myl_flip_h = np.flip(myl,0) # horizontal flip
>> array([[2, 1],
[4, 3]])
对于垂直翻转,使用索引1:
myl_flip_v = np.flip(myl,1) # vertical flip
>>array([[3, 4],
[1, 2]])