1.ndarray的4个重要属性
-
ndim:返回数组的维度数。例如,一维数组的
ndim
为1,二维数组的ndim
为2 -
shape:返回数组的形状,即各个维度的大小。例如,对于一个二维数组,
shape
会返回一个包含行数和列数的元组 -
size:返回数组中元素的总数
-
dtype:返回数组中元素的数据类型。NumPy支持多种数据类型,包括整数、浮点数、复数等
# 数据分析三剑客
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# python.png
# 图片:其实是数字组成的,三维数组
# RGB:红Red,绿Green,蓝Blue
# RGB范围:0-255
# plt.imread:读取图片的数据
pyimg = plt.imread("python.png")
pyimg
# 查看形状
pyimg.shape
# 执行结果
(539, 1080, 4)
# 有几个数字就表示几维
# (539, 1080, 4) ,表示三维数组
# 第一个维度:539,第二维度:1080,第三维度:4
# 查看维度
pyimg.ndim
# 执行结果
3
# 查看总数据量
pyimg.size
# 执行结果:539 * 1080 * 4
2328480
# 查看元素类型
pyimg.dtype
# 执行结果
dtype('float32')
2.一维与列表完全一致,多维时同理
-
基本索引:通过索引值访问数组中的元素。在Python中,索引通常从0开始
-
切片索引:通过指定起始索引、结束索引和步长来访问数组中的一部分元素。切片操作返回的是原数组的一个视图,而不是一个新的数组
-
整数数组索引:使用整数数组作为索引,可以一次性访问多个元素
-
布尔索引:使用布尔数组作为索引,可以访问满足特定条件的元素
# 一维数组
l = [1,2,3,4,5,6]
l[0],l[-1]
# 执行结果
(1, 6)
# 一维数组
n = np.array(l)
n[0],n[-1]
# 执行结果
(1, 6)
# 二维数组
n = np.random.randint(0,10,size=(4,5))
n
# 执行结果
array([[5, 3, 9, 5, 1],
[9, 9, 9, 5, 8],
[6, 7, 5, 1, 4],
[9, 4, 6, 4, 9]])
# 找到最后一个数
# n[3][4]
# n[-1][-1]
# 简写
# n[3,4]
n[-1,-1]
# 执行结果
9
# 三维数组
n = np.random.randint(0,100,size=(4,5,6))
n
# 执行结果
array([[[ 0, 2, 28, 10, 75, 82],
[52, 60, 2, 4, 27, 68],
[68, 37, 26, 35, 57, 59],
[92, 1, 23, 90, 12, 60],
[99, 64, 20, 31, 71, 10]],
[[59, 45, 91, 2, 36, 99],
[97, 46, 91, 78, 70, 85],
[58, 81, 86, 53, 62, 97],
[45, 93, 67, 17, 63, 91],
[ 7, 19, 17, 95, 67, 96]],
[[94, 86, 95, 0, 19, 13],
[80, 89, 56, 53, 57, 97],
[ 6, 82, 4, 40, 59, 38],
[42, 35, 64, 55, 89, 98],
[74, 14, 17, 88, 22, 52]],
[[16, 75, 96, 47, 96, 9],
[74, 33, 84, 24, 10, 14],
[36, 47, 85, 91, 40, 76],
[46, 79, 50, 68, 35, 96],
[46, 7, 85, 14, 95, 22]]])
# 找到第二个数组的第三行最后一个数
# n[1][2][-1]
n[1,2,-1]
# 执行结果
97
3.根据索引修改数据
# 修改第二个数组的第三行最后一个数
n[1,2,-1] = 997
n
# 执行结果
array([[[ 0, 2, 28, 10, 75, 82],
[ 52, 60, 2, 4, 27, 68],
[ 68, 37, 26, 35, 57, 59],
[ 92, 1, 23, 90, 12, 60],
[ 99, 64, 20, 31, 71, 10]],
[[ 59, 45, 91, 2, 36, 99],
[ 97, 46, 91, 78, 70, 85],
[ 58, 81, 86, 53, 62, 997],
[ 45, 93, 67, 17, 63, 91],
[ 7, 19, 17, 95, 67, 96]],
[[ 94, 86, 95, 0, 19, 13],
[ 80, 89, 56, 53, 57, 97],
[ 6, 82, 4, 40, 59, 38],
[ 42, 35, 64, 55, 89, 98],
[ 74, 14, 17, 88, 22, 52]],
[[ 16, 75, 96, 47, 96, 9],
[ 74, 33, 84, 24, 10, 14],
[ 36, 47, 85, 91, 40, 76],
[ 46, 79, 50, 68, 35, 96],
[ 46, 7, 85, 14, 95, 22]]])
# 修改第二个数组的第三行整行数据
n[1,2] = [1,2,3,4,5,6]
n[1,2]
# 执行结果
array([[[ 0, 2, 28, 10, 75, 82],
[52, 60, 2, 4, 27, 68],
[68, 37, 26, 35, 57, 59],
[92, 1, 23, 90, 12, 60],
[99, 64, 20, 31, 71, 10]],
[[59, 45, 91, 2, 36, 99],
[97, 46, 91, 78, 70, 85],
[ 1, 2, 3, 4, 5, 6],
[45, 93, 67, 17, 63, 91],
[ 7, 19, 17, 95, 67, 96]],
[[94, 86, 95, 0, 19, 13],
[80, 89, 56, 53, 57, 97],
[ 6, 82, 4, 40, 59, 38],
[42, 35, 64, 55, 89, 98],
[74, 14, 17, 88, 22, 52]],
[[16, 75, 96, 47, 96, 9],
[74, 33, 84, 24, 10, 14],
[36, 47, 85, 91, 40, 76],
[46, 79, 50, 68, 35, 96],
[46, 7, 85, 14, 95, 22]]])