Myluzh Blog

Strive to become a dream architect.

Python numpy 数组基本操作(索引与切片用法、改变形状、修改类型、去重)

发布时间: 2023-7-14 文章作者: myluzh 分类名称: Python


0x01 数组索引与切片用法
import numpy as np

# (2)二维数组
# 首先生成一个二维数组
arr2 = np.random.uniform(-1, 2, size=(5, 5))
"""
# 查看下arr2
arr2 Out[3]: 
array([[ 1.05865188,  1.18597622, -0.81279676,  1.79444952,  0.71910054],
       [-0.62385763, -0.61713265,  0.94918552, -0.24394799,  1.81343914],
       [-0.71354709, -0.93964984,  0.96237785,  1.23973639,  0.11628672],
       [ 0.02623292,  1.68481857, -0.79207649,  0.79625302, -0.32104851],
       [ 0.75240426,  0.15582726, -0.87529045, -0.28858853,  0.01173709]])
# 只要第一行里面的0-3个数据
arr2[0,0:3]
Out[4]: array([ 1.05865188,  1.18597622, -0.81279676])
"""

# (2)三维数组
# 首先生成一个2,2,3的三维数组
arr3 = np.random.randint(1, 4, size=(2, 2, 3))
"""
# 查看下arr3
arr3  Out[3]: 
array([[[2, 1, 2],
        [1, 1, 2]],
       [[1, 3, 2],
        [2, 2, 1]]])
# 获取 1 0 0 里面的数
arr3[1,0,0]
Out[4]: 1
"""

0x02 数组改变形状

import numpy as np

# ndarray.reshape(shape, order)
# 返回一个具有相同数据域,但shape不一样的视图 行、列不进行互换。在转换形状的时候,一定要注意数组的元素匹配
arr1 = np.random.randint(1, 100, size=(4, 5))
"""
# 原先4行5列改成5行4列
arr1.reshape([5, 4]) 
Out[3]: 
array([[86, 17, 65, 22],
       [94, 71, 83, 62],
       [27, 32, 44, 34],
       [21, 25, 41, 95],
       [14, 73, 30, 44]])
# 数组的形状被修改为: (2,10),下面的-1:表示通过待计算,一定要可以整除后面的10要不然会报错
#arr.reshape([-1, 10])  
Out[4]: 
array([[86, 17, 65, 22, 94, 71, 83, 62, 27, 32],
       [44, 34, 21, 25, 41, 95, 14, 73, 30, 44]])
"""

# ndarray.resize(new_shape)
# 修改数组本身的形状(需要保持元素个数前后相同)行、列不进行互换
arr2 = np.random.randint(1, 100, size=(4, 5))
"""
arr2
Out[3]: 
array([[31, 98, 18, 91, 16],
       [57, 58, 44, 62,  1],
       [ 3, 64, 90, 56, 25],
       [10, 94, 42, 73, 32]])
arr2.resize([5,4])
arr2.shape
Out[5]: (5, 4)
"""

# ndarray.T 数组的转置将数组的行、列进行互换
arr3 = np.random.randint(1, 100, size=(4, 5))
"""
arr3.T.shape
Out[5]: (5, 4)
"""

0x03 数组类型修改

import numpy as np

# 使用astype方法修改为int64
arr1 = np.random.uniform(-1, 2, size=(3))
"""
# 查看下arr1
arr1 Out[3]: array([-0.59856987, -0.70929721,  1.60210413])
arr1.astype(np.int64)
Out[4]: array([0, 0, 1])
"""

# 使用tostring方法修改为str
arr2 = np.array([1, 2, 3])
"""
arr2.tostring()
Out[3]: b'\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00'
"""

0x04 数组去重

# 使用np.unique()去重
arr1 = np.array([[3, 4, 3, 4], [1, 2, 3, 4]])
"""
np.unique(arr1)
# 去重后的数组
Out[3]: array([1, 2, 3, 4])
"""
0x05 

标签: python numpy 数组

发表评论