我目前正在处理来自摄像头的数据,该摄像头可跟踪机器人特工和周围人员的位置。我要设置人员相对于机器人的距离,而不是摄像机当前使用的网格。下面是格式化数据的示例:
x idx time type
0 -24.782 7 1.390789e+09 0
1 25.832 6 1.390789e+09 0
2 47.513 5 1.390789e+09 0
3 42.492 4 1.390789e+09 0
4 10.387 3 1.390789e+09 0
5 -12.468 2 1.390789e+09 0
6 44.725 1 1.390789e+09 0
7 -13.452 0 1.390789e+09 1
Type = 1
表示所标识的代理是机器人,我想将Type == 0
(人类)的所有'x'值减去机器人的(Type == 1
)位置(仅当时间值相同时。)
我为此做了一些徒劳的尝试,但是由于没有反复遍历然后重建数据帧,所以我无法高效地做到这一点。有没有更Python化的方法可以解决这个问题?
答案 0 :(得分:0)
按类型分割,按时合并,然后减去:
import UIKit
import Firebase
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
var emptyArray = [String] ()
var depAirp : String = ""
var destAirp : String = ""
var routeName : String = ""
var ref: DatabaseReference!
var keyArray = [String] ()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate=self
tableView.dataSource=self
ref = Database.database().reference()
tableView.allowsMultipleSelectionDuringEditing = true
// //create array for table view to be dispaly from fire base
ref.child("Rotta").observe(.childAdded, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.emptyArray.append(actualPost)
self.tableView.reloadData()
}
})
}
// display array on table view
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellid", for: indexPath)
let text = emptyArray[indexPath.row]
cell.textLabel?.text=text
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return emptyArray.count
}
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
//delate data at table view
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
emptyArray.remove(at: indexPath.row)
ref.child("Rotta").child(routeName).removeValue()
tableView.beginUpdates()
tableView.deleteRows(at: [indexPath], with: .automatic)
tableView.endUpdates()
}
}
// button take data from 2 text field and save into the var and create the name for the routing name
@IBAction func button1(_ sender: Any) {
depAirp = textField1.text!
destAirp = textField2.text!
view.endEditing(true)
routeName=("\(depAirp)-\(destAirp)")
ref.child("Rotta").child(routeName).setValue(routeName)
ref.child("Rotta").child(routeName).child("Dep Airport").setValue(depAirp)
ref.child("Rotta").child(routeName).child("Dest Airport").setValue(destAirp)
print(routeName)
textField1.text=""
textField2.text=""
view.endEditing(true)
}
}