Python使用numpy数组数据

时间:2015-07-16 01:57:06

标签: python arrays python-3.x numpy typeerror

我正在编写一个程序,它将附加一个列表,其中包含从2维numpy数组中提取的单个元素。到目前为止,我有:

# For loop to get correlation data of selected (x,y) pixel for all bands
zdata = []
for n in d.bands:
    cor_xy = np.array(d.bands[n])
    zdata.append(cor_xy[y,x])

每次运行程序时,都会出现以下错误:

Traceback (most recent call last):
    File "/home/sdelgadi/scr/plot_pixel_data.py", line 36, in <module>
        cor_xy = np.array(d.bands[n])
TypeError: only integer arrays with one element can be converted to an index

当我在不使用循环的情况下从python解释器中尝试它时,我的方法有效,即

>>> zdata = []
>>> a = np.array(d.bands[0])     
>>> zdata.append(a[y,x])
>>> a = np.array(d.bands[1])
>>> zdata.append(a[y,x])
>>> print(zdata)
[0.59056658, 0.58640128]

创建for循环并手动执行此操作有何不同,以及如何让循环停止导致错误?

1 个答案:

答案 0 :(得分:4)

n的元素为d.bands

时,您将d.bands视为zdata = [] for n in d.bands: cor_xy = np.array(n) zdata.append(cor_xy[y,x]) 的索引
a = np.array(d.bands[0])

你说n有效。第一个d.bands[0]应与np.array(n)完全相同。如果是这样,那么 #include<iostream> #include<vector> using namespace std; class Sales_data{ public: Sales_data(const string&s):bookNo(s) {} //other constructor………… Sales_data& combine(const Sales_data&); private: string bookNo; unsigned units_sold = 0; double revenue = 0.0; }; Sales_data& Sales_data::combine(const Sales_data &rhs) { units_sold+=rhs.units_sold; revenue+=rhs.revenue; return *this; } int main() { string s("No.1"); Sales_data item1("No.1"); item1.combine(s); return 0; } 就是您所需要的。