ndarray四个重要属性
ndim:维度
shape:形状
size:总长度
dtype:元素类型
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
picture1=plt.imread("rin.jpg") #读取rin.jpg文件,文件要放在相关目录下
picture1.ndim #结果为3指这个图片为3维
picture1.shape #我的结果为(960,960,3)指图片的分辨率为高960,宽960,3字节由构0-255的3维矩阵
picture1.size #我的结果是2764800,960*960*3
picture1.dtype #dtype('uint8') 无符号整数,8位1字节 00000000
ndarray索引
y1 = [1,4,7,2,5,8,3,6,9]
y1[0],y1[-1]
n1 = np.array(y1)
n1[0],n1[-1]
y2 = [[1,4,7],[2,5,8],[3,6,9]]
y2
y2[2][2] #2行2列的数和y2[2,2]同理
#修改数据
y2[-1,-1]=1 #将最后一个数改为1
y2
y2[1]=3 #第一行全改为3
y2
切片
y1 = [1,2,3,4,5,6,7,8,9]
y1[3:6]
y1[::-1] #翻转
n = np.array(y1)
n
n[3:6]
n[::-1] #行翻转
n1 = np.random.randint(0,10,size=(8,8))
n1[0] #取一行
n1[2:5] #取连续多行
n1[[1,3,5]] #取不连续多汗
n1[:,1] #先取所有行,再取其中的第二列
n1[::-1] #行翻转
n1[:,::-1] #列翻转
图片翻转
plt.imshow(picture1[::-1]) #上下翻转
plt.imshow(picture1[:,::-1]) #左右翻转
plt.imshow(picture1[:,:,::-1]) #颜色翻转 RGB->BGR
n1 = np.arange(1,21)
n1
n1.shape
n2 = np.reshape(n1,(4,5)) #变二维
n2
n2.shape
#使用-1表示剩余维度长度,只能设一个
n2.shape(5,-1)
n2.shape(-1:10)
#应用
n2.shape(-1:1) #在不知道数据长度时想将数据变为多行一列时使用
数组级联合并
n1 = np.random.randint(0,100,size=(3,5))
n2 = np.random.randint(0,100,size=(3,5))
display(n1,n2)
#np.concatenate((a1,a2,..),axis=0,out=None,casting="same_kind")
np.concatenate((n1,n2)) #默认上下合并
np.concatenate((n1,n2),axis=1) #左右合并
np.hstack((n1,n2)) #水平(左右)合并
np.vstack((n1,n2)) #锤子(上下)合并
拆分
n = np.random.ranint(0,100,size=(6,4))
n
np.vsplit(n,3) #横着拆成3份
np.vsplit(n,(1,2,4)) #按照指定位置去拆
np.hsplit(n,2) #竖着拆成2份
np.hsplit(n,(1,2)) #按照指定位置去拆
np.splot(n,2)
np.splot(n,2,axis=1)
副本/复制/拷贝
n = np.arang(10)
n2 = n
n2[0] = 100
display(n,n2) #n跟着n2一起变了
n1 = np.arange(10)
n2 = n1.copy()
n2[0] = 100
display(n1,n2) #n1没变