Я пытаюсь найти относительное положение моего датчика по отношению к солнцу, вычитая солнечный азимут из курса компаса.Для целей тестирования у меня есть два числа NumPy.Один с солнечным азимутом для 52 различных выборок и один с компасом для 52 различных выборок.
Я все время делаю этот вид операнда на числах с нулевыми числами, поэтому я не знаю, почему он дает мнеследующая ошибка.
TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'
Это часть кода, я постараюсь включить как можно больше, но он исходит из большой базы кода.
####STUFF above####
# for debugging
a = dalecData.get_solar_azimuth()
b = dalecData.get_cmp_heading()
print type(a)
print type(b)
print a.shape
print b.shape
print a.flags
print b.flags
print a.ndim
print b.ndim
a - b
#work aroundS ????
#sensorAzimuth = subract(dalecData.get_solar_azimuth(),dalecData.get_cmp_heading())
#sensorAzimuth = asarray(dalecData.get_solar_azimuth()) - asarray(dalecData.get_cmp_heading())## wtf?
#for i in range(0,dalecData.get_solar_azimuth().shape[0]):
# sensorAzimuth[i] = dalecData.get_solar_azimuth()[i] - dalecData.get_cmp_heading()[i]
Дает мне следующееoutput
<type 'numpy.ndarray'>
<type 'numpy.ndarray'>
(52, 1)
(52, 1)
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
UPDATEIFCOPY : False
2
2
Все «обходные пути» дают одинаковую ошибку
Векторы инициализируются с использованием
# viewing geometry
self.__solarZenith = zeros((1))
self.__solarAzimuth = zeros((1))
Accessors
def get_solar_zenith(self):
return self.__solarZenith
def get_solar_azimuth(self):
return self.__solarAzimuth
def set_cmp_heading(self,value):
self.__cmpHeading = value
И заполняется с помощью
row = self.findClosestDatetime(self.__edStartTime[i], self.__cmpDateTime)
heading = vstack((heading, self.__cmpHeading[row-1]))
heading = delete(heading,0,0) # get rid of initialised 0
self.set_cmp_heading(heading)
. Это должно привести к повторной выборке данных во времена выборки edStartTime.И, кажется, работает.
солнечный зенит и азимут вычисляются с использованием pysolar http://pysolar.org/
Все значения кажутся правильными, я просто не могу вычесть значения из каждогоДругой.Это происходит только с этими векторами.Я могу добавить и вычесть другие векторы таким же образом в другом месте моего кода.
Я надеюсь, что объяснил свою ситуацию.Буду признателен за помощь в понимании ошибки.
Спасибо