【Numpy数据处理】数组基本操作-索引与切片

1,051 阅读2分钟

我正在参与掘金创作者训练营第6期,点击了解活动详情

1. 数组的索引、切片

一维,二维、三维的数组如何索引

  • 直接通过中括号就可以进行索引,切片,与python语法很相似
  • 对象[:, :]中括号中的参数表示先行后列
  • 举例:二维数组切片A[0, 0:3]
    • 获取二维数组中,第一个一维数组数组中,第0-3个元素

2. 数组形状改变

ndarray.reshape(shape, order)

  • 返回一个具有相同数据域,但shape不一样的视图
  • 行与列不进行互换
  • 注意:这个函数返回了一个新数组,原本数组不改变
  • 相当于把原数组所有元素排成一行,然后按照所需形状,一个个往里面填充
  • 注意中括号中可以使用-1参数,表示某行或者某列待定

代码演示:将原数组a,维度(2,3)。重新变形成b,维度为(1,6)。c数组是将原数组变形成2列,而行数-1表示行数进行相应填充。

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)

b = a.reshape([1, 6])
print(b)

c = a.reshape([-1, 2])
print(c)

运行结果如下图所示:注意,一个参数使用-1的情况下,另一个参数需要被整除,否则会报错。

image.png

ndarray.resize(new_shape)

  • 修改数组本身的形状(需要保持元素个数前后相同)
  • 行与列不进行互换
  • 注意:这个函数对本身的数组进行了修改

ndarray.T

  • 数组的转置
  • 将数组的行与列进行了互换

代码演示:T转置更像是一个属性,通过数组.T的形似查看数组的转置。

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)

print(a.T)

运行结果如下图所示:输出的第一个数组为原数组,第二个数组为转置后的数组

image.png

3. 数组类型修改

ndarray.astype(type)

  • 返回修改了类型之后的数组
  • 例如A.astype(np.int32):表示把数组类型改为int32

ndarray.tostring([order])或者ndarray.tobytes([order])

  • 构造包含数组中原始数据字节的Python字节
  • 转化成字符串类型

4. 数组去重

np.unique()

  • 括号内传入对应的对象
  • 就可以把重复的元素去掉
  • 但是返回的是一个新的对象,可以用变量来接收

代码演示:将数组去重处理,输出去重结果。

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [1,1,2]])
a1 = np.unique(a)
print(a1)

运行结果:将原本的[[1, 2, 3], [4, 5, 6], [1,1,2]]数组,去掉重复多余的元素,然后排成一维数组[1 2 3 4 5 6]

image.png