numpy Task03

数组操作

更改形状
  • numpy.ndarray.shape表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。
import numpy as np

x = np.array([1,2,9,4,5,6,7,8])
print(x.shape)
x.shape = [2,4]
print(x)

(8,)
[[1 2 9 4]
[5 6 7 8]]

  • numpy.ndarray.flat 将数组转换为一维的迭代器,可以用for访问数组每一个元素。
import numpy as np
x = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])
y = x.flat

for i in y:
    print(i,end=',')

11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,

  • numpy.ndarray.flatten([order=‘C’]) 将数组的副本转换为一维数组,并返回。
    【order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘k’ – 元素在内存中的出现顺序。】
import numpy as np
x = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])
y = x.flatten()
print(y)

[11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
35]

  • numpy.ravel(a, order=‘C’)将数组转换为一维数组,与上面不同的是,此方法返回的是数组的视图
  • reshape()函数当参数newshape = -1时,表示将数组降为一维

数组转置

  • numpy.transpose(a,axes=None)
  • numpy.ndarray.T
import numpy as np
x = np.random.rand(5,5) * 10
x = np.around(x ,2)
print(x)
print("++++++++++++++")
y = x.T
print(y)
print("++++++++++++++")
z = np.transpose(x)
print(z)

[[1.62 1.64 2.18 2.61 3.45]
[3.42 9.84 7.68 4.1 7.24]
[3.95 1.1 0.8 2.89 0.19]
[0.15 0.91 5.34 9.95 8.62]
[7.48 6.67 0.38 2.31 0.33]]
++++++++++++++
[[1.62 3.42 3.95 0.15 7.48]
[1.64 9.84 1.1 0.91 6.67]
[2.18 7.68 0.8 5.34 0.38]
[2.61 4.1 2.89 9.95 2.31]
[3.45 7.24 0.19 8.62 0.33]]
++++++++++++++
[[1.62 3.42 3.95 0.15 7.48]
[1.64 9.84 1.1 0.91 6.67]
[2.18 7.68 0.8 5.34 0.38]
[2.61 4.1 2.89 9.95 2.31]
[3.45 7.24 0.19 8.62 0.33]]

更改维度

  • 当创建了一个数组之后,还可以给它增加一个维度,这在矩阵计算中经常会用到。
    【numpy.newaxis = None None】
import numpy as np
x = np.array([1,2,9,4,5,6,7,8])
print(x.shape)
print(x)
print("++++++++++++")
y = x[:,np.newaxis]
print(y.shape)
print(y)

(8,)
[1 2 9 4 5 6 7 8]
++++++++++++
(8, 1)
[[1]
[2]
[9]
[4]
[5]
[6]
[7]
[8]]

  • numpy.squeeze(a,axis = None)从数组的形状中删除单维度条目,即把shape中为1的维度去掉
    【a表示输入是数组;axis用于指定需要删除的维度,但是指定是维度必须为单维度,否则将会报错】
import numpy as np 
x = np.arange(10)
print(x.shape)
x = x[np.newaxis,:]
print(x.shape)
y = np.squeeze(x)
print(y.shape)

(10,)
(1, 10)
(10,)

数组组合

  • 连接沿现有轴的数组序列(原来x,y都是一维的,拼接后的结果也是一维的)。
import numpy as np
x = np.array([1,2,3])
y = np.array([7,8,9])
z = np.concatenate([x,y])
print(z)

[1 2 3 7 8 9]

  • 原来x,y都是二维的,拼接后的结果也是二维的
import numpy as np
x = np.array([1,2,3]).reshape(1,3)
y = np.array([7,8,9]).reshape(1,3)
z = np.concatenate([x,y])
print(z)
print('+++++++++++++++')
z = np.concatenate([x, y], axis=1)
print(z)

[[1 2 3]
[7 8 9]]
+++++++++++++++
[[1 2 3 7 8 9]]

  • 沿着新的轴加入一系列数组(stack)
import numpy as np

x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[7, 8, 9], [10, 11, 12]])
z = np.stack([x, y])
print(z.shape)
print(z)

(2, 2, 3)
[[[ 1 2 3]
[ 4 5 6]]

[[ 7 8 9]
[10 11 12]]]

数组拆分
  • numpy.split(ary, indices_orsections,sxis=0) 拆分数组
import numpy as np
x = np.array([[11, 12, 13, 14],
              [16, 17, 18, 19],
              [21, 22, 23, 24]])
y = np.split(x,[1,3])
print(y)

[array([[11, 12, 13, 14]]), array([[16, 17, 18, 19],
[21, 22, 23, 24]]), array([], shape=(0, 4), dtype=int32)]

  • 垂直切分是把数组按照高度切分
import numpy as np

x = np.array([[11, 12, 13, 14],
              [16, 17, 18, 19],
              [21, 22, 23, 24]])
y = np.vsplit(x, 3)
print(y)

[array([[11, 12, 13, 14]]), array([[16, 17, 18, 19]]), array([[21, 22, 23, 24]])]

  • 水平切分是把数组按照宽度切分。
import numpy as np

x = np.array([[11, 12, 13, 14],
              [16, 17, 18, 19],
              [21, 22, 23, 24]])
y = np.hsplit(x, 2)
print(y)

[array([[11, 12],
[16, 17],
[21, 22]]), array([[13, 14],
[18, 19],
[23, 24]])]

数组平铺
  • numpy.tile(A,reps)将原矩阵横向、纵向地复制
import numpy as np

x = np.array([[1, 2], [3, 4]])
print(x)
print("++++++++++")
y = np.tile(x,(1,3))
print(y)

[[1 2]
[3 4]]
++++++++++
[[1 2 1 2 1 2]
[3 4 3 4 3 4]]

  • numpy.repeat(a, repeats, axis=None)【axis=0,沿着y轴复制,增加了行数;axis=1,沿着x轴复制,增加了列数;repeats,可以为一个数,也可以为一个矩阵;axis=None时就会flatten当前矩阵,实际上变成了一个行向量】
import numpy as np

x = np.array([[1, 2], [3, 4]])
y = np.repeat(x, 2, axis=1)
print(y)

[[1 1 2 2]
[3 3 4 4]]

添加和删除元素
  • numpy.unique(ar, return_index=False, return_inverse=False,return_counts=False, axis=None)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BigCabbageFy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值