Numpy---类型修改、去重、级联、拆分、拷贝复制

1. 类型修改

ndarray.astype(type)

返回修改了类型之后的数组

stock_change = np.random.normal(0, 1, (4, 5))
stock_change.astype(np.int32)

ndarray.tostring([order])

ndarray.tobytes([order])

构造包含数组中原始数据字节的Python字节

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[12, 3, 34], [5, 6, 7]]])
arr.tostring()

2. 去重

temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
np.unique(temp)
array([1, 2, 3, 4, 5, 6]

3. 级联

np.concatenate()

参数是列表或元组;级联的数组维度必须相同;可通过axis参数改变级联的方向

n1 = np.random.randint(0, 100, size=(3, 5))
n2 = np.random.randint(0, 100, size=(3, 5))
display(n1, n2)

Numpy---类型修改、去重、级联、拆分、拷贝复制_第1张图片

# 级联,合并
np.concatenate((n1, n2))  # 默认上下合并
np.concatenate((n1, n2), axis=0)  # 上下合并 axis=0表式第一个维度(行)

Numpy---类型修改、去重、级联、拆分、拷贝复制_第2张图片

# 左右合并 axis=1 表式第2个维度(列)
np.concatenate((n1, n2), axis=1)

np.hstack与np.vstack

水平级联与垂直级联

# np.hstack : 水平级联,左右合并
np.hstack((n1, n2))

# np.vstack: 上下合并,垂直级联
np.vstack((n1, n2))

Numpy---类型修改、去重、级联、拆分、拷贝复制_第3张图片

4. 切分/拆分/分割

与级联类似,三个函数完成切分工作:

np.split      np.vsplit      np.hsplit

n = np.random.randint(0, 100, size=(6, 4))
n

Numpy---类型修改、去重、级联、拆分、拷贝复制_第4张图片

# 垂直拆分,平均拆成3份
np.vsplit(n, 3)

Numpy---类型修改、去重、级联、拆分、拷贝复制_第5张图片

# 可以按照指定位置拆分
np.vsplit(n, (1, 2, 4))

Numpy---类型修改、去重、级联、拆分、拷贝复制_第6张图片

# 水平方向拆分
np.hsplit(n, 2)

Numpy---类型修改、去重、级联、拆分、拷贝复制_第7张图片

# split: 可以做水平或垂直拆分
#  axis=0 行
#  axis=1 列
np.split(n, 2)  # 默认按行拆分
np.split(n, 2, axis=0)  # 按行拆分

np.split(n, 2, axis=1)  # 按列拆分

5. 拷贝复制

# 赋值 : 用的是同一个内存
n = np.arange(10)
n2 = n
n2[0] = 100
display(n, n2)
array([100,   1,   2,   3,   4,   5,   6,   7,   8,   9])
array([100,   1,   2,   3,   4,   5,   6,   7,   8,   9])
# 拷贝: copy
n1 = np.arange(10)
# n1
n2 = n1.copy()
n2[0] = 100
display(n1, n2)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([100,   1,   2,   3,   4,   5,   6,   7,   8,   9])
# 深拷贝copy
n = np.random.randint(0, 10, size=(2, 3))
n2 = n.copy()
n2[0, 0] = 100
display(n, n2)
array([[2, 4, 8],
       [1, 4, 2]])
array([[100,   4,   8],
       [  1,   4,   2]])

你可能感兴趣的:(numpy,numpy,python,机器学习)