python Numpy转置和计算

python Numpy转置和计算,python,arrays,pandas,numpy,Python,Arrays,Pandas,Numpy,我对python和numpy比较陌生。我目前正在尝试使用numpy在python中复制下表,如图所示 如图所示,我得到了填充的列“group,sub_group,value”。我想转置列“sub_group”,并进行简单计算,即值减去移位(value),然后在每个组的矩阵的下对角线中显示该图。如果sub_group为“0”,则将整个列指定为0。转置子_组可以命名为任何名称(最好是索引号),如果它更容易命名的话。我也同意熊猫的解决方案。我只是觉得熊猫可能很慢 以下是数组形式的代码: import

我对python和numpy比较陌生。我目前正在尝试使用numpy在python中复制下表,如图所示

如图所示,我得到了填充的列“group,sub_group,value”。我想转置列“sub_group”,并进行简单计算,即值减去移位(value),然后在每个组的矩阵的下对角线中显示该图。如果sub_group为“0”,则将整个列指定为0。转置子_组可以命名为任何名称(最好是索引号),如果它更容易命名的话。我也同意熊猫的解决方案。我只是觉得熊猫可能很慢

以下是数组形式的代码:

import numpy as np
a=np.array([(1,-1,10),(1,0,10),(1,-2,15),(1,-3,1),(1,-4,1),(1,0,12),(1,-5,16)], dtype=[('group',float),('sub_group',float),('value',float)])
任何帮助都将不胜感激。 当做
S

这段代码对子组的示例进行计算,我不确定这是否是您真正想要的,在这种情况下,请在此处发表评论,我将进行编辑

import numpy as np
array_1=np.array([(1,-1,10),(1,0,10),(1,-2,15),(1,-3,1),(1,-4,1);(1,0,12),(1,-5,16)])
#transpose the matrix
transposed_group = array_1.transpose()
#loop over the first row
for i in range(0,len(transposed_group[1,:])):
#value[i] - first value of the row
    transposed_group[0,i] = transposed_group[0,i] - transposed_group[0,0]
print  transposed_group
如果要在矩阵的对角线中显示,可以在行和列之间循环,例如:

import numpy as np
#create an array of 0
array = np.zeros(shape=(3,3))
#fill the array with 1 in the diagonals
print array
#loop over rows
for i in range(0,len(array[:,1])):
    #loop over columns
    for j in range(0,len(array[1,:])):
        array[i,j] = 1

print array

这段代码用于计算子组的示例,我不确定这是否是您真正想要的,在这种情况下,请在此处发表评论,我将进行编辑

import numpy as np
array_1=np.array([(1,-1,10),(1,0,10),(1,-2,15),(1,-3,1),(1,-4,1);(1,0,12),(1,-5,16)])
#transpose the matrix
transposed_group = array_1.transpose()
#loop over the first row
for i in range(0,len(transposed_group[1,:])):
#value[i] - first value of the row
    transposed_group[0,i] = transposed_group[0,i] - transposed_group[0,0]
print  transposed_group
如果要在矩阵的对角线中显示,可以在行和列之间循环,例如:

import numpy as np
#create an array of 0
array = np.zeros(shape=(3,3))
#fill the array with 1 in the diagonals
print array
#loop over rows
for i in range(0,len(array[:,1])):
    #loop over columns
    for j in range(0,len(array[1,:])):
        array[i,j] = 1

print array
试试这个:

import numpy as np
import pandas as pd

a=np.array([(1,-1,10),(1,0,10),(1,-2,15),(1,-3,1),(1,-4,1),(1,0,12),(1,-5,16)], dtype=[('group',float),('sub_group',float),('value',float)])
df = pd.DataFrame(a)

for i in df.index:
    col_name = str(int(df['sub_group'][i]))
    df[col_name] = None

    if df['sub_group'][i] == 0:
        df[col_name] = 0
    else:
        val = df['value'][i]
        for j in range(i, df.index[-1]+1):
            df[col_name][j] = val - df['value'][j]
对于矩阵的上三角,我已经输入了
None
值。你可以用你想要的任何东西替换它。

试试这个:

import numpy as np
import pandas as pd

a=np.array([(1,-1,10),(1,0,10),(1,-2,15),(1,-3,1),(1,-4,1),(1,0,12),(1,-5,16)], dtype=[('group',float),('sub_group',float),('value',float)])
df = pd.DataFrame(a)

for i in df.index:
    col_name = str(int(df['sub_group'][i]))
    df[col_name] = None

    if df['sub_group'][i] == 0:
        df[col_name] = 0
    else:
        val = df['value'][i]
        for j in range(i, df.index[-1]+1):
            df[col_name][j] = val - df['value'][j]

对于矩阵的上三角,我已经输入了
None
值。你可以用你想要的任何东西来代替它。

你什么意思
值移位(值)
我不知道它是什么意思,我的意思是说第一个值-第二个值,然后第一个值-第三个值,然后第一个值-第四个值,等等
值移位(值)
我不知道它是什么意思,我的意思是说第一个值-第二个值,然后是第一个值-第三个值,然后是第一个值-第四个值,依此类推。您在代码中给出的数组
a
与excel工作表中的数组不同。lol。当涉及到提供堆栈溢出信息时,我真是太笨了。谢谢你,MMF,你是一个Pi-genius。你在代码中给出的数组
a
与excel工作表中的数组不同。lol。当涉及到提供堆栈溢出信息时,我真是太笨了。谢谢你,你是Pi-genius。你好,普拉德拉斯,谢谢你的解决方案。它并没有达到预期的效果,但仍然是一个需要牢记的解决方案。再次感谢您Hello Praderas,感谢您的解决方案。它并没有达到预期的效果,但仍然是一个需要牢记的解决方案。再次感谢你