python

Python之一维数组的探讨: 维度是(n,)还是(n,1)?

2021-07-10  本文已影响0人  Qiangest

对于使用习惯matlab的人来说, 一维数组是一下很难理解的. 比如

A=[1;2;3;4]

这里的一维数组, 也可以说是4X1的二维数组.

但是python里并不这么认为, python里规定, 一维数组就是一维, 维度是(4,)不存在说是特殊的一维那种情况. 相反地, python里规定了一个matrix类, 对应着二维数组, 而且指定定义二维. (现在已经不推荐使用, 而是推荐不管多少维都统一使用array类).

因为对于数据处理来说, 很多情况下二维已经够用了. 所以matlab一般都是用二维. 那么我们可以想一下, 如果可以说A是一个4X1的特殊二维数组, 那为什么不说A是一个特殊的4X1X1的三维数组? 以此类推, 就解释不清了.

所以在python中, 一维就是一维, 对于一个一维数组

B=np.array([1,2,3,4])

来说, 无法取除了一维之外的其他属性:

B[2,0]
IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

但是我们可以对于二维数组C:

C = B.reshape((4, 1))
array([[1],
       [2],
       [3],
       [4]])

C是一个(4,1)的二维矩阵, 可以取它的第二维属性:

C[2,0]
3

希望大家能够对此有所体会.

延伸阅读:

  1. 关于一维数组和二维数组的储存不同: Difference between numpy.array shape (R, 1) and (R,)
  2. Python中array和matrix计算的不同: What are the differences between numpy arrays and matrices? Which one should I use?
  3. Why Numpy has dimension (n,) instead of (n,1) only [duplicate]
上一篇 下一篇

猜你喜欢

热点阅读