我喜欢创建一个numpy数组--形状为[2,3],其中每个数组元素是一个列表。是的,我知道这效率不高,甚至不可取,所有的理由都是这样的--但这能做到吗?
所以我想要一个2x 3的数组,其中每个点都是长度为2的向量,而不是2x 3x 2的数组,是的,真的。
如果我把它弄得破烂不堪,它就起作用了:
>>> np.array([[0, 0], [0, 1], [0, 2], [1, 0], [9, 8], [2, 4, -1]], dtype=object).reshape([2, 3])
array([[list([0, 0]), list([0, 1]), list([0, 2])],
[list([1, 0]), list([9, 8]), list([2, 4, -1])]], dtype=object)
但是如果numpy can 使它完全适合,它就会这样做,并抛出一个错误:
>>> np.array([[0, 0], [0, 1], [0, 2], [1, 0], [9, 8], [2, 4]], dtype=object).reshape([2, 3])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot reshape array of size 12 into shape (2,3)
所以,抛开你认为这是一件愚蠢的事情的直觉不谈(确实如此,我知道这一点),我能不能让最后一个例子以某种方式创建一个shape 2x 3数组,其中每个元素都是长度为2的Python列表,而不需要numpy强制它成为2x 3x 2?
2条答案
按热度按时间xpcnnkqh1#
首先,您应该创建一个具有预期形状的对象数组。
然后,使用list填充数组。
z18hc3ub2#
您可以创建一个空数组,然后手动用对象填充它: