如何获取np.nditer的正确返回类型?我需要在此处遍历ax
对象:
fig, ax = plt.subplots(figsize=(16,9), ncols=3, nrows=2)
for col, elem in zip(df.columns[:-1], np.nditer(ax, flags = ['refs_ok'])):
sns.countplot(x="CLASS", hue=col, data=df, ax=elem)
我知道我可以使用ax数组的维度在这里进行迭代,但是我想知道是否可以进行这项工作。基本上,ax=elem
在迭代中应该看起来像ax=ax[i][j]
。但是事实证明它们有不同的类型:
print(type(elem))
print(type(ax[0][0]))
返回:
<class 'numpy.ndarray'>
<class 'matplotlib.axes._subplots.AxesSubplot'>
答案 0 :(得分:2)
可能您想像
那样进行迭代#include<iostream>
using namespace std;
class
{
public :
int FullName;
int RollNumber;
in
{
public :
int FullName;
int RollNumber;
int age;
int marks;
}
voidt age;
int marks;
};
void main()
{
int n;
cout << "How many Students record you want :\t ";
cin >>n;
Data Student[n];
}
较短,总是使fig, ax = plt.subplots(figsize=(16,9), ncols=3, nrows=2)
for col, elem in zip(df.columns[:-1], ax.flat):
sns.countplot(x="CLASS", hue=col, data=df, ax=elem)
成为elem
对象。
答案 1 :(得分:1)
使用这样的numpy
函数的问题是它将立即将可迭代对象转换为np.ndarray
对象。
因此,您的返回值将是此np.ndarray
对象的一部分,请看以下示例
In [472]: list(np.nditer([[None, None], [None, None]], flags = ['refs_ok']))
Out[472]:
[(array(None, dtype=object), array(None, dtype=object)),
(array(None, dtype=object), array(None, dtype=object))]
In [473]: list(np.nditer([[None, None], [None, None]], flags = ['refs_ok']))[0][0]
Out[473]: array(None, dtype=object)
如果要从0维numpy
数组中获取原始项目,请使用.tolist()
方法
您可能现在已经知道,由于您没有迭代数字类型,因此引入所有numpy
的复杂性和开销是没有意义的,正确的方法是https://stackoverflow.com/a/52316861/4013571