Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 展开数组并追加行名称_Python_Arrays_Pandas_Numpy - Fatal编程技术网

Python 展开数组并追加行名称

Python 展开数组并追加行名称,python,arrays,pandas,numpy,Python,Arrays,Pandas,Numpy,我有一个输入文件foo.txt,其中有以下几行 A 1 2 3 B 4 5 6 C 7 8 9 import numpy as np import pandas as pd file="foo.txt" source_array=pd.read_csv(file, sep=" ", header=None) name_array=source_array.iloc[:,0].to_numpy() number_array=source_array.

我有一个输入文件foo.txt,其中有以下几行

A 1 2 3
B 4 5 6
C 7 8 9
import numpy as np
import pandas as pd

file="foo.txt"

source_array=pd.read_csv(file, sep=" ", header=None)

name_array=source_array.iloc[:,0].to_numpy()
number_array=source_array.iloc[:,1:4].to_numpy()

r1=np.array([[1,0,0],[0,1,0],[0,0,1]])
r2=np.array([[0.5,-0.30902,-0.80902],[0.30902,-0.80902,0.5],[-0.80902,-0.5,-0.30902]])
r3=np.array([[0.5,0.30902,-0.80902],[-0.30902,-0.80902,-0.5],[-0.80902,0.5,-0.30902]])
mult_array=np.array([r1,r2,r3])

out_array=np.empty((0,3))
for i in range(number_array.shape[0]):
    lad=number_array[i,0:3]
    lad=lad.reshape(1,3)
    print(lad)
    for j in range(mult_array.shape[0]):
        operated_array=np.dot(lad,mult_array[j])
        out_array=np.append(out_array,operated_array,axis=0)
        #print(operated_array)
    np.savetxt('foo2.txt',out_array, fmt='%.2f')
我写了以下几行

A 1 2 3
B 4 5 6
C 7 8 9
import numpy as np
import pandas as pd

file="foo.txt"

source_array=pd.read_csv(file, sep=" ", header=None)

name_array=source_array.iloc[:,0].to_numpy()
number_array=source_array.iloc[:,1:4].to_numpy()

r1=np.array([[1,0,0],[0,1,0],[0,0,1]])
r2=np.array([[0.5,-0.30902,-0.80902],[0.30902,-0.80902,0.5],[-0.80902,-0.5,-0.30902]])
r3=np.array([[0.5,0.30902,-0.80902],[-0.30902,-0.80902,-0.5],[-0.80902,0.5,-0.30902]])
mult_array=np.array([r1,r2,r3])

out_array=np.empty((0,3))
for i in range(number_array.shape[0]):
    lad=number_array[i,0:3]
    lad=lad.reshape(1,3)
    print(lad)
    for j in range(mult_array.shape[0]):
        operated_array=np.dot(lad,mult_array[j])
        out_array=np.append(out_array,operated_array,axis=0)
        #print(operated_array)
    np.savetxt('foo2.txt',out_array, fmt='%.2f')
执行do乘法后,我得到以下输出

1.00 2.00 3.00
-1.31 -3.43 -0.74
-2.55 0.19 -2.74
4.00 5.00 6.00
-1.31 -8.28 -2.59
-4.40 0.19 -7.59
7.00 8.00 9.00
-1.31 -13.14 -4.44
-6.25 0.19 -12.44
但是foo2.txt中的预期输出是

A 1.00 2.00 3.00
A -1.31 -3.43 -0.74
A -2.55 0.19 -2.74
B 4.00 5.00 6.00
B -1.31 -8.28 -2.59
B -4.40 0.19 -7.59
C 7.00 8.00 9.00
C -1.31 -13.14 -4.44
C -6.25 0.19 -12.44
如何在执行点乘时复制行名称的次数

为清晰起见,输入打印(df)输出为

df
   0  1  2  3
0  A  1  2  3
1  B  4  5  6
2  C  7  8  9

我们不需要循环,也可以借助
explode

df['new']=np.dot(df,mult_array).tolist()
s=df.new.explode()
output=pd.DataFrame(s.tolist(),index=s.index).round(2)
Out[30]: 
      0      1      2
A  1.00   2.00   3.00
A -1.31  -3.43  -0.74
A -2.55   0.19  -2.74
B  4.00   5.00   6.00
B -1.31  -8.28  -2.59
B -4.40   0.19  -7.59
C  7.00   8.00   9.00
C -1.31 -13.14  -4.44
C -6.25   0.19 -12.44
数据输入

df
   0  1  2
A  1  2  3
B  4  5  6
C  7  8  9

你是说第二个for循环吗?@PranavShah是的..不,我们根本不需要for循环..我得到这个错误df['new']=np.dot(df,mult_数组).tolist()文件“”,第6行,在dot value中错误:形状(3,4)和(3,3,3)未对齐:4(dim 1)!=3(尺寸1)@PranavShah检查上述输入df,确保您输入的相同输入是不同的…`DF0123A0A123B1B4562C789`