我希望在将数组转换为列表
后减小数组的尺寸a = np.array([[1,2],[3,4]])
print a.shape
b = np.array([[1],[3,4]])
print b.shape
输出:
(2, 2)
(2,)
我希望a具有与b相同的形状,即(2,)
答案 0 :(得分:1)
>>> a = np.array([[1,2],[3,4], None])[:2]
>>> a
array([[1, 2], [3, 4]], dtype=object)
>>> a.shape
(2,)
作品虽然可能是错误的做法(我是一个numpy newb)。
答案 1 :(得分:0)
你明白b
是什么吗?
b = np.array([[1],[3,4]])
print(repr(b))
array([[1], [3, 4]], dtype=object)
b
是一个包含2个元素的1d数组,每个元素都是一个列表。 np.array
这样做是因为2个子列表具有不同的长度,因此无法创建2d数组。
a = np.array([[1,2],[3,4]])
print(repr(a))
array([[1, 2],
[3, 4]])
这里有2个子列表具有相同的长度,因此它可以创建一个二维数组。每个元素都是整数。 np.array
尝试创建输入允许的最高维数组。
创建另一个数组(如b
)的最佳方法可能是制作副本,然后插入所需的列表。
a1 = b.copy()
a1[0] = [1,2]
# a1[1] = [3,4]
print(repr(a1))
array([[1, 2], [3, 4]], dtype=object)
你必须使用这种复杂的方法,因为你试图做一些“不自然的”。
您对使用vstack
发表评论。两者都有效:
In [570]: np.vstack((a,b)) # (3,2) array
Out[570]:
array([[1, 2],
[3, 4],
[[1], [3, 4]]], dtype=object)
In [571]: np.vstack((a1,b)) # (2,2) array
Out[571]:
array([[[1, 2], [3, 4]],
[[1], [3, 4]]], dtype=object)
您的数组b
只是数组包装器中的原始列表。这真的是你需要的吗? 2d a
是一个普通的numpy
数组。 b
是一个古怪的结构。