【Python】ndarray中的合并与分割
程序员文章站
2022-05-27 22:41:30
...
import numpy as np
ndim shape size reshape
a = np.arange(10)
a # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a.ndim # 1
a.shape # (10,)
a.size # 10
A = np.ones(shape=(3, 5)) # 3行5列的二维数组,值全为1
A
A.ndim # 2
A.shape # (3, 5)
A.size # 15
a = np.array([[1, 2, 3],
[4, 5]])
a # array([list([1, 2, 3]), list([4, 5])], dtype=object)
a.ndim # 1
a.shape # (2,)
a.size # 2
a = np.arange(10)
a # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
X = a.reshape(2, 5)
X
X.ndim # 2
X.shape # (2, 5)
a.reshape(5, -1) # 5行,列自己计算
a.reshape(-1, 2) # 2列,行自己计算
# a.reshape(-1, 3) # ValueError: cannot reshape array of size 10 into shape (3)
取值
X = np.arange(15).reshape(3, 5)
X # 15个数,分成3行5列的数组
X[0] # array([0, 1, 2, 3, 4])
X[-1] # array([10, 11, 12, 13, 14])
X[0][4] # 不推荐这种方式取值,有些情况不能得到想要的数据 4
X[(0, 4)] # 推荐这种方式取值,建议简化如下:
X[0, 4] # 推荐这种方式取值 4
一维数组切片
a = np.arange(10)
a[0:5] # 切片 array([0, 1, 2, 3, 4])
a[:5] # array([0, 1, 2, 3, 4])
a[5:] # array([5, 6, 7, 8, 9])
a[0:8:2] # 第1个参数开始;第2个参数结束(不包括);第3个参数步长 array([0, 2, 4, 6])
a[::2] # array([0, 2, 4, 6, 8])
a[::-1] # array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
二维数组切片
X = np.arange(15).reshape(3, 5) # 取值
X # 15个数,分成3行5列的数组
X[0:2, 0:3]
X[:2, :3]
X[:2][:3] # 先切出[0:2] 在前一次的结果上,再做[0:3]
X[::2, ::2]
X[:2, ::2]
X[::-1, ::-1] # 行和列的数据都倒过来
引用关系
X = np.arange(15).reshape(3, 5) # 取值
X # 15个数,分成3行5列的数组
a =list(range(5))
a # [0, 1, 2, 3, 4]
b = a[:2]
b # [0, 1]
b[1] = 111
b # [0, 111]
a # [0, 1, 2, 3, 4]
X2 = X[:2, :2]
X2[0, 0] = 99
X2 # X2第1行第1列的数被改成99,X也随之改变
X3 = X[:2, :2].copy()
X3
X3[0, 0] = 100
X3 # X3第1行第1列的数被改成100,而X未变化
注:代码来自《Python全栈工程师特训班》课程
上一篇: jupyterlab安装及简单配置