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)

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

# 左右合并 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))

4. 切分/拆分/分割

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

np.split      np.vsplit      np.hsplit

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

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

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

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

# 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]])

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三月七꧁ ꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值