Я буду читать данные из файла, у меня есть только два числа в файле (1.63, -0.21), вывод:
{'y': array([-0.21]), 'x': array([1.63])}
Мне нужен такой вывод:
position = {'x': 1.63 , 'y' : -0.21}
это мой код:
import pandas as pd
import numpy as np
def read():
data = pd.read_csv('distance.csv', skipinitialspace=True, header=None)
x0, y0 = np.array(data.ix[:,0]), np.array(data.ix[:,1])
position = {'x': x0 , 'y' : y0}
print position
if __name__ == '__main__':
try:
read()
except KeyboardInterrupt:
rospy.loginfo('Shutting down')
пожалуйста, помогите мне
заранее спасибо
Изменить это
x0, y0 = np.array(data.ix[:,0]), np.array(data.ix[:,1])
к x0, y0 = data.ix[:,0], data.ix[:,1]
По сути, вам нужно удалить обертку np.array
, которая преобразует ваш float в nd.array
Спасибо за помощь, вывод: {'y': 0 -0.21 Name: 1, dtype: float64, 'x': 0 1.63 Name: 0, dtype: float64}
, мне нужно вот так {'x': 1.63 , 'y' : -0.21}
по этому пути работало но долго
import pandas as pd
import numpy as np
import csv
def read():
data_path = 'distance.csv'
with open(data_path, 'r') as f:
reader = csv.reader(f, delimiter=',')
# get all the rows as a list
data = list(reader)
# transform data into numpy array
data = np.array(data).astype(float)
a = data[0]
x0,y0 = a[0], a[1]
#
position = {'x': x0 , 'y' : y0}
print position
if __name__ == '__main__':
try:
read()
except KeyboardInterrupt:
rospy.loginfo('Shutting down')
выход:
{'y': -0.21, 'x': 1.63}
также этот способ хорош:
import pandas as pd
import numpy as np
def read():
data = np.genfromtxt('distance.csv', dtype=str, delimiter=',')
x0, y0 = (data[0]), (data[1])
position = {'x': x0 , 'y' : y0}
print position
if __name__ == '__main__':
try:
read()
except KeyboardInterrupt:
rospy.loginfo('Shutting down')
выход:
{'y': '-0.21', 'x': '1.63'}
Если это всего лишь одна строка с двумя числами, зачем вы вообще используете np.array
? В качестве альтернативы вы пробовали np.genfromtxt
?
попробуй это
import numpy as np
data = np.genfromtxt('distance.csv', dtype=list).tolist()
x0,y0 = float(data[0]), float(data[1])
position = {'x': x0 , 'y' : y0}
print position
вывод:
{'y': -0.7, 'x': 1.7}
все они правы, это зависит от того, как записывать ваши данные. например, этот метод подходит для вас, потому что он иногда записывает его во втором ряду: with open("distance.csv", "wb") as text_file: text_file.write("\n%.3f" % (x)) text_file.write("\t%.3f" % (l))
Что именно содержит файл? Просто два числа или строка, подобная исходному словарю.