我想通過從羅盤標題中減去太陽方位來找到我的傳感器相對於太陽的位置。出於測試目的,我有兩個numpy向量。一個用52個不同樣品的太陽方位角,另一個用52個不同樣品的指南針。查找類型錯誤減去相同大小和類型的兩個numpy.ndarrays
我一直在做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/
所有值的計算似乎是正確的,我只是不能相互減去值。它只發生在這些載體上。我可以在我的代碼中的其他地方以相同的方式添加和減去其他向量。
我希望我已經解釋了我的情況。我很感謝幫助理解錯誤。
感謝
檢查類型的數組中的元素,你減去 –
通過一些奇怪的機會嘗試還檢查'a.dtype'和'b.dtype' –
他們是字符串數組?如果你對字符串數組(或帶有字符串字段的結構化數組)進行數學運算,你會得到相同的錯誤。對於任何不支持減法的dtype(或python類型)也是如此(儘管字符串數組是我能想到的唯一一個)。 –