我正在编写一个程序,它将附加一个列表,其中包含从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循环并手动执行此操作有何不同,以及如何让循环停止导致错误?
答案 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;
}
就是您所需要的。