我想在numpy数组中创建一个numpy数组。如果我用普通的python做它像
这样的东西a = [[1,2], [3,4]]
a[0][1] = [1,1,1]
print a
结果是[[1,[1,1,1]],[3,4]]
如何使用numpy数组实现相同的目标?我的代码是:
a = np.array([(1, 2, 3),(4, 5, 6)])
b = np.array([1,1,1])
a[0][1] = b
答案 0 :(得分:1)
据我所知,你不能这样做。 Numpy数组不能具有不同形状的条目。您制作像[[1, [1, 1, 1]], [3, 4]]
这样的数组的请求是不可能的。但是,你可以制作一个尺寸为(3x2x3)的numpy矩阵来获得
[
[
[1,0,0],
[1,1,1],
[0,0,0],
]
[
[3,0,0],
[4,0,0],
[0,0,0]
]
]
你唯一的选择是填充一些带有一些数字的空元素(我上面使用0
)或使用其他数据结构。
答案 1 :(得分:1)
Error: Permission denied @ unlink_internal - /usr/local/share/ghostscript/9.16/Resource/CIDFont/HiraKakuPro-W3
是dtype int。每个元素只能是另一个整数:
a
你可以创建另一个dtype数组,一个包含指向对象的指针,就像列表一样:
In [758]: a = np.array([(1, 2, 3),(4, 5, 6)])
...: b = np.array([1,1,1])
...:
In [759]: a
Out[759]:
array([[1, 2, 3],
[4, 5, 6]])
In [760]: b
Out[760]: array([1, 1, 1])
In [761]: a[0,1]=b
...
ValueError: setting an array element with a sequence.
现在可以用指向In [762]: aO = a.astype(object)
In [763]: aO
Out[763]:
array([[1, 2, 3],
[4, 5, 6]], dtype=object)
数组的指针替换其中一个元素指针:
b
但正如评论中所说 - 你为什么要/需要这样做?你打算用这样的阵列做什么?可以在这样的数组上进行一些In [765]: aO[0,1]=b
In [766]: aO
Out[766]:
array([[1, array([1, 1, 1]), 3],
[4, 5, 6]], dtype=object)
数学运算,但是如最近的一些SO问题所示,它是命中注定的。它也慢了。