假设我有一个NumPy数组
当然,这种方法行不通,因为
c
,构造如下:a = np.zeros((2,4))
b = np.zeros((2,8))
c = np.array([a,b])
我原本期望c.shape
是(2,1)
或(2,)
,但实际上它是(2,2)
。另外,我的目标是将一个全为1的列向量连接到a
后面,但是通过以下方式从c
中访问它:
c0 = c[0] # I would have expected this to be 'a'
np.concatenate((np.ones((c0.shape[0], 1)), c0), axis=1)
当然,这种方法行不通,因为
c [0] 并不等于我预期的a
,结果就是:
ValueError: all the input arrays must have same number of dimensions
我需要一种方法来存储由numpy数组组成的对列表或数组,并且我需要访问每一对中的第一个数组以便将一个列向量被连接到它上面。我的应用是机器学习,我的数据将以描述的格式传递给我,但是我需要在开始时修改数据,以添加偏置元素。
编辑: 我正在使用Python 2.7和Numpy 1.8.2
c = [a,b]
?可以将c
设为对象数据类型的数组,其中可以存储任意形状的 NumPy 数组 --c = np.empty((2,), dtype='object')
;c[:] = [a,b]
-- ,但是对象数组与普通的 Python 列表相比没有任何速度优势。你可能会用它来进行 NumPy 切片语法,但我还没有看到过一个令人信服的用例。 - unutbunp.array([a,b])
会引发与Dux提到的相同的ValueError
异常。 - unutbuc = [a, b]
就符合要求。 - unutbu