如何解决我想在没有循环的情况下从python中的另一个矩阵中提取一个矩阵
我有一个包含我的数据的 excel 文件。就是这个: enter image description here 在读取并将其存储在“数据”变量中后,我想将其分成 2 部分并将它们分配给不同的变量。我的意思是我想从我的数据输入中提取 2 个形状不一致的矩阵。 例如,如果我的数据是我放在这里的图片,我想要这两个: enter image description here 和 enter image description here 我使用了这个索引,但没有用。 这是代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
FilePath='E:\\# Civil Engineering graduate\\Projects\\Python\\RoutePlanning'
FileName='\\Data.xlsx'
Data=pd.read_excel(FilePath+FileName)
print(Data)
Points=np.array(Data[1:,0:3])
这是它通过的错误:
Exception has occurred: TypeError
'(slice(1,None,None),slice(0,3,None))' is an invalid key
File "E:\# Civil Engineering graduate\Projects\Python\RoutePlanning\RoutePlanning.py",line 9,in <module>
Points=np.array(Data[1:,0:3])
我见过一些解决方案为此使用了循环和函数定义,除非我必须…… 毫无疑问,我在这里建立索引时犯了一个错误,因为它不起作用。但我想知道这是否可以修复并投入使用,或者是否有任何类似解决方案的索引。 如果不是,那么性能最佳的解决方案是什么。
解决方法
这是因为 Data
是一个 Pandas DataFrame,而不是一个 numpy.ndarray
。
如果您使用 Data.to_numpy()[1:,0:3]
,它会起作用。
我想 Data
是一个数据框,您尝试使用标签位置进行切片。试试iloc
:
Points=np.array(Data.iloc[1:,0:3])
你可以得到你想要的 numpy 数组,如下所示:
points_left = Data.iloc[1:,:3].to_numpy()
points_right = Data.iloc[1:,3:].to_numpy()
,
谢谢大家。 这个效果很好。但现在是 NaN!
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
FilePath='E:\\# Civil Engineering graduate\\Projects\\Python\\RoutePlanning'
FileName='\\Data.xlsx'
Data=pd.read_excel(FilePath+FileName)
Data=np.array(Data)
print(Data)
Points=np.array(Data[:,0:4])
print(Points)
Obstacles=np.array(Data[:,4:9])
print(Obstacles)
我已经得到了我想要的数据: 数据=
[[ 1. 0. 0. 0. 1. 2. 2. 2. 1.]
[ 2. 5. 5. 5. nan nan nan nan nan]]
点数=
[[1. 0. 0. 0.]
[2. 5. 5. 5.]]
障碍=
[[ 1. 2. 2. 2. 1.]
[nan nan nan nan nan]]
现在需要做的就是删除 NaN。 有什么推荐吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。