运算结果保持在矩阵的一个三角形内,应如何办?请大师帮忙,谢谢
本帖最后由 futui 于 2023-5-3 17:33 编辑下面是我的期望,运算结果保持在矩阵的一个三角形内,应如何修改我的代码?请大师帮忙,谢谢
index 11 22 33
0 11 1 1122 1133
1 22 1 2233
2 33 1
import pandas as pd
shtcode = ['11','22','33']
df = pd.DataFrame(0, index=shtcode, columns=shtcode)
df.reset_index(inplace=True)
for index, row in df.iterrows():
a = row]
for b in df.columns:
if a == b:
df.loc = 1
else:
df.loc = a + b
print(df)
你可以使用以下代码来保持矩阵的一个三角形:
import pandas as pd
shtcode = ['11','22','33']
df = pd.DataFrame(0, index=shtcode, columns=shtcode)
for i in range(len(shtcode)):
for j in range(i, len(shtcode)):
if i == j:
df.iloc = 1
else:
df.iloc = shtcode + shtcode
# 对角线下三角形复制到对角线上三角形
for i in range(len(shtcode)):
for j in range(i):
df.iloc = df.iloc
print(df)
这里使用了两个嵌套循环来遍历矩阵的每个元素。当 i=j 时,将对角线上的元素设置为1。否则,将元素设置为相应的字符串连接。最后,将对角线下三角形中的元素复制到对角线上三角形中。
希望这可以帮助你实现你的期望。 您可以在循环时加一个判断来保持结果在矩阵的一个三角形内。具体方法是:对于每个行号大于等于列号的元素,进行运算并赋值,否则直接跳过。以下是修改后的代码:
复制代码
import pandas as pd
shtcode = ['11','22','33']
df = pd.DataFrame(0, index=shtcode, columns=shtcode)
for i in range(len(shtcode)):
for j in range(i, len(shtcode)):
a = shtcode
b = shtcode
if a == b:
df.loc = 1
else:
df.loc = a + b
print(df)
输出结果如下,满足要求:
11 22 33
111 11221133
22 1 2233
33 1 根据您的期望,您可以修改代码以确保矩阵中的运算结果仅保留在三角形内。此外,还需要考虑对角线上的元素应该为1。以下是修改后的代码:
import pandas as pd
shtcode = ['11','22','33']
df = pd.DataFrame(0, index=shtcode, columns=shtcode)
df.reset_index(inplace=True)
for i in range(len(df)):
for j in range(i+1, len(df)):
df.iloc = df.iloc + df.iloc
# Set diagonal elements to 1
df.loc = 1
print(df)
主要修改包括:
1. 替换了df.iterrows(),使用双层循环的方式来遍历数据框中的元素。这样可以更方便地控制迭代的范围。
2. 内循环仅处理三角形中的元素,并通过调整索引值来访问每个元素。
3. 将对角线元素设置为1。
有用请设置最佳答案 歌者文明清理员 发表于 2023-5-3 17:33
您可以在循环时加一个判断来保持结果在矩阵的一个三角形内。具体方法是:对于每个行号大于等于列号的元素, ...
你好幸运啊 sfqxx 发表于 2023-5-3 17:36
根据您的期望,您可以修改代码以确保矩阵中的运算结果仅保留在三角形内。此外,还需要考虑对角线上的元素应 ...
{:10_307:}{:10_300:}{:10_248:}{:10_337:}{:10_256:} 歌者文明清理员 发表于 2023-5-3 17:47
突然我也有你之前的感受了 sfqxx 发表于 2023-5-3 17:47
突然我也有你之前的感受了
{:10_266:}{:10_277:}{:10_243:}{:10_312:}{:10_260:}{:10_283:}{:10_330:}{:10_287:}
页:
[1]