python 数据shape的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yyhaohaoxuexi/article/details/86305089

刚开始使用python做东西,总是不太理解矩阵、数组相关的问题,所以在此记录shape方面的总结。(文中内容部分来自互联网,也有个人理解)

1、数据的长度

  数据的长度应该仅仅是在行方向上的数据的长度,无论是什么形状(一行的链表或者几行几列的矩阵)

import numpy as np
arr = [1, 2, 3, 4, 5]
matrix = [[1, 1, 1],
          [2, 2, 2],
          [3, 3, 3]]
# 使用len函数求链表的长度
print(len(arr))
# 使用numpy求矩阵的长度
print(np.size(matrix))

输出结果:

5
3

2、数据的shape

  但是shape并不是和长度相关的,我理解的shape就是这个对象的形状。

import numpy as np

arr = [1, 2, 3, 4, 5]
matrix = [[1, 1, 1],
          [2, 2, 2],
          [3, 3, 3]]

print(np.shape(arr))
print(np.shape(matrix))

# 也可转化为numpy的数据然后调用 .shape
# arr = np.array(arr)
# matrix = np.array(matrix)

# print(arr.shape)
# print(matrix.shape)

输出结果:

# 数量为5的向量
(5,)
# 三行三列
(3, 3)

3、拼接

  python中链表(方括号数据)可以拼接,而数组(圆括号数据)是不可以进行拼接的。

matrix = [[1, 1, 1],
          [2, 2, 2],
          [3, 3, 3]]

# 追加
matrix.append([9, 10])
print(matrix)
# 扩展
matrix.extend([9, 10])
print(matrix)

输出结果:

[[1, 1, 1], [2, 2, 2], [3, 3, 3], [9, 10]]
[[1, 1, 1], [2, 2, 2], [3, 3, 3], [9, 10], 9, 10]

4、维度扩充

  这是这篇文章最为重要的部分,我们把一个长度为5的链表增加一个维度。

import numpy as np


arr = [1, 2, 3, 4, 5]

arr = np.array(arr)
print(arr)
print(arr.shape)

# x方向上增加维度
matrix = arr[np.newaxis, :]
print(matrix)
print(matrix.shape)

# y方向上增加维度
matrix2 = arr[:, np.newaxis]
print(matrix2)
print(matrix2.shape)

输出结果:

# 原内容
[1 2 3 4 5]
# 原形状,即五行的链表
(5,)

# x方向上增加维度
# 增加维度后的内容
[[1 2 3 4 5]]
# 增加维度后的形状,即一行五列的矩阵
(1, 5)

# y方向上增加维度
# 增加维度后的内容
[[1]
 [2]
 [3]
 [4]
 [5]]
 # 增加维度后的形状,即五行一列的矩阵
(5, 1)

猜你喜欢

转载自blog.csdn.net/yyhaohaoxuexi/article/details/86305089