python - 循环遍历目录时代码不起作用:TypeError:__array_function__ 的调度程序没有返回可迭代
问题描述
我正在尝试创建一个布尔列('flag_rise'),它标记数字在不同列('Zoom')中增加的实例 - 因此当数字大于它之前的数字时将其标记为 True。我编写的代码在一个文件上运行时有效,但是当我尝试通过目录运行它时,出现此错误:TypeError:array_function的调度程序没有返回可迭代。我在网上找不到太多关于这个错误的信息。我通过在文件子集上运行代码来仔细检查文件,我得到了同样的错误。这些文件都以相同的方式格式化。任何帮助表示赞赏。
这是代码:
directory = os.chdir(r"directory")
# create list of files
dir_list = os.listdir(directory)
for file in dir_list:
def rise (a):
return np.concatenate((False),a[1:] > a[:-1])
df['flag_rise'] = rise(df.Zoom.values)
解决方案
concatenate
需要一个数组列表(或至少一个iterable
)作为第一个参数。第二个应该是一个整数,一个axis
.
In [421]: np.concatenate((False),np.array([True, False]))
Traceback (most recent call last):
File "<ipython-input-421-2e0a61c32e56>", line 1, in <module>
np.concatenate((False),np.array([True, False]))
File "<__array_function__ internals>", line 5, in concatenate
TypeError: dispatcher for __array_function__ did not return an iterable
第一个论点是(False)
。() 在这里什么都不做,这只是False
,而不是列表、元组或其他可迭代的。第二个参数是一个数组。
更改括号以包裹两者False
和数组是不够的,因为False
它仍然是一个标量(或 0d 数组):
In [422]: np.concatenate([False,np.array([True, False])])
Traceback (most recent call last):
File "<ipython-input-422-f6c715674042>", line 1, in <module>
np.concatenate([False,np.array([True, False])])
File "<__array_function__ internals>", line 5, in concatenate
ValueError: zero-dimensional arrays cannot be concatenated
列False
个清单,然后就可以了:
In [423]: np.concatenate([[False],np.array([True, False])])
Out[423]: array([False, True, False])
concatenate
将列表的所有元素转换为数组:
In [425]: np.array(False)
Out[425]: array(False)
In [426]: _.shape
Out[426]: ()
In [427]: __.ndim
Out[427]: 0
它不能将 () 形状数组连接到轴 0 上的 (2,) 形状。数组必须匹配维数。
推荐阅读
- json - 如何在使用 SQL Server Management Studio 12.7 生成 json 的列名中输出不带回车的 json 文件
- python - 以标签为轴的 Pandas 数据框重塑
- django - Admin Django fieldset creating new user creation form
- python - 将角色添加到文本通道 discord.py discord bot
- tensorflow - 如何减少 GPU/TPU 内存使用以重用编码器(例如 RNN/Tensor2Tensor/等)?
- android - 重新启动后自定义应用程序无法打开
- html - 需要帮助将我的页眉/页脚与我的主体对齐
- linux - 在中断处理程序处获取中断任务的调用堆栈
- python - 如何通过 gitlab api 提交更新?
- tensorflow - GCP ML 引擎预测的错误处理输入