python Numpy转置和计算
我对python和numpy比较陌生。我目前正在尝试使用numpy在python中复制下表,如图所示 如图所示,我得到了填充的列“group,sub_group,value”。我想转置列“sub_group”,并进行简单计算,即值减去移位(value),然后在每个组的矩阵的下对角线中显示该图。如果sub_group为“0”,则将整个列指定为0。转置子_组可以命名为任何名称(最好是索引号),如果它更容易命名的话。我也同意熊猫的解决方案。我只是觉得熊猫可能很慢 以下是数组形式的代码: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
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,感谢您的解决方案。它并没有达到预期的效果,但仍然是一个需要牢记的解决方案。再次感谢你