为什么Numpy部分函数要求传tuple,传入list也可正常运行?
Numpy函数可传入list替代tuple参数的原因
- Numpy官方文档中参数名标注的
tup是历史命名习惯,而非强制类型约束。这类堆叠类函数的参数名沿用了早期版本的设计约定,不代表仅支持tuple类型输入。 - 包括
numpy.vstack在内的序列处理类Numpy函数,内部实现会先对输入参数做统一预处理:只要传入的是非字符串的可迭代序列,无论tuple、list还是生成器等其他可迭代对象,都会被转换为统一格式的待拼接数组序列,预处理结果不会因容器类型是list还是tuple产生差异,因此最终输出完全一致。 - 仅需注意必须将所有待堆叠的数组包裹在同一个序列中传入,直接传入单个未包裹的数组会触发维度匹配错误。
你甚至可以传入生成器类型的参数,也能得到相同的结果:
np.vstack(arr for arr in [c1, c2])
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

