我试图通过从罗盘标题中减去太阳方位角来找到我的传感器与太阳的相对位置。出于测试目的,我有两个numpy向量。一个具有52个不同样本的太阳方位角,另一个具有52个不同样本的指南针。
我一直在numpy向量上做这种操作数,所以我不知道它为什么会给我以下错误。
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]
给我以下输出
<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))
访问者
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/
计算的所有值似乎都是正确的,我无法相互减去这些值。它只发生在这些载体上。我可以在代码的其他地方以相同的方式添加和减去其他向量。
我希望我已经解释了我的情况。我很感激帮助理解错误。
由于