0

我对 NumPy 数组有疑问。

我无法使用 .T 之类的数组方法或 numpy.concatenate 之类的函数来处理我创建的数组:

>>> a=np.array([1,2,3])
>>> a
array([1, 2, 3])
>>> a.T
array([1, 2, 3])
>>> np.concatenate((a,a),axis=0)
array([1, 2, 3, 1, 2, 3])
>>> np.concatenate((a,a),axis=1)
array([1, 2, 3, 1, 2, 3])
>>>

但是,当我使用像 rand 这样的内置函数创建数组时,一切都很好

>>> a=np.random.rand(1,4)
>>> a.T
array([[ 0.75973189],
       [ 0.23873578],
       [ 0.6422108 ],
       [ 0.47079987]])
>>> np.concatenate((a,a),axis=0)
array([[ 0.92191111,  0.50662157,  0.75663621,  0.65802565],
       [ 0.92191111,  0.50662157,  0.75663621,  0.65802565]])

你认为它与元素类型(int32 vs float64)有关吗?

我在 Windows 7 上运行 python 2.7

任何帮助将不胜感激。

谢谢 !

4

1 回答 1

1

尝试:

a = np.random.rand(4)

然后我想你会发现它的工作原理是一样的。

一般来说,对于 numpy,您确实需要注意数组的形状和轴。形状(4,)(4,1)(1,4)都不同,并且在大多数情况下表现不同。

例如:

a = np.random.rand(4)
print a.shape, a.T.shape  # (4,) (4,)

b = np.random.rand(1,4)
print b.shape, b.T.shape  # (1,4) (4,1)
于 2013-08-31T21:59:18.733 回答