我想在一个 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
a
创建时是 dtype int。每个元素只能是另一个整数:
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.
您可以创建另一种 dtype 数组,它包含指向对象的指针,就像 list 一样:
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)
但正如评论中所问的那样 - 你为什么想要/需要这样做?你打算用这样的数组做什么?可以numpy
对这样的数组进行一些数学运算,但如最近的一些 SO 问题所示,它是命中注定的。它也更慢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句