【发布时间】:2019-08-05 17:41:27
【问题描述】:
我正在尝试使用影响函数来理解黑盒模型。我在使用包含 2 个功能和 2 个类的玩具数据集时遇到广播错误。下面,我使用两个列表 a1 和 a2 总结了实际错误。
a1 = [array([[-0.00491985, 0.00491965],
[-0.00334969, 0.00334955],
[-0.00136081, 0.00136076]], dtype=float32),
array([-0.00104678, 0.00104674], dtype=float32)]
a2 =
[array([[-0.00334969, 0.00334955],
[-0.00136081, 0.00136076]], dtype=float32),
array([-0.00104678, 0.00104674], dtype=float32)]
我正在尝试使用 np.asarray() 将上述两个列表转换为数组
print(np.asarray(a1))
array([array([[-0.00491985, 0.00491965],
[-0.00334969, 0.00334955],
[-0.00136081, 0.00136076]], dtype=float32),
array([-0.00104678, 0.00104674], dtype=float32)], dtype=object)
虽然 np.asarray(a1) 工作正常,但 np.asarray(a2) 会抛出以下错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-51-3060768e9016> in <module>()
----> 1 np.asarray(a2)
/home/devi/.local/lib/python3.5/site-packages/numpy/core/numeric.py in asarray(a, dtype, order)
536
537 """
--> 538 return array(a, dtype, copy=False, order=order)
539
540
ValueError: could not broadcast input array from shape (2,2) into shape (2)
我浏览了许多描述广播错误的论坛,但仍然无法弄清楚 np.asarray() 的工作方式。
当 list 的元素是维度 (3x2) 和 (1x2) 的数组时,np.asarray() 返回一个长度为 2 的数组。而当元素的维度是 (2x2) 和 (1x2) 时,为什么它抛出一个错误?而不是像前一种情况那样返回一个长度为 2 的数组。任何理解相同的帮助将不胜感激!
【问题讨论】:
标签: arrays python-3.x tensorflow numpy-ndarray