非结构化--第二章

本文详细介绍了NumPy库在创建、操作和处理数组方面的基本功能,包括数组的创建、形状变换、运算、切片、连接以及数据存取。还涉及到数组的排序、搜索以及线性代数运算的基础知识,是学习Python科学计算的实用指南。
摘要由CSDN通过智能技术生成

在这里插入图片描述
数组名两大写在Spyder里不显示

1:创建数组:

利用array()函数创建数组

import numpy as np
d=np.array(列表,元祖,嵌套列表,嵌套数组,等给定的数据结构转化为数组)

若需要转化的为二维数组以及以上,那么需要有[ 中括号]将他们括起来

利用内置函数创建数组

z1=np.ones((n,m)) #创建n行m列元素全为1的数组
z2=np.zeros((n,m)) #创建n行m列元素全为0的数组
z3=np.arange(a,b,c) #利用arange(a,b,c)创建以a为初始值,b-1为末值,c为步长 的一维数组

若需要转化的为二维数组以及以上,那么需要有(中括号)中括号将他们括起来

2:数组尺寸

通过shape属性可以返回数组的长度,如果是一维数组,则返回的元祖中仅仅一个元素,代表这个数组的长度。如果是二维数组,元祖中两个值,第一个值代表数组的行数,第二个值代表数组的列表。

 d1=[1,2,3,4,5,6]
d2=[[1,2,3,4],[5,6,7,8]]

import numpy as np
d11=np.array(d1)
d22=np.array(d2)

s11=np.shape(d11)
s22=np.shape(d22)

在这里插入图片描述
数组进行重排,可以通过reshape()函数来实现

r=np.array(range(9))  #一维数组
r1=r.reshape((3,3))  #重排位3行3列

在这里插入图片描述

在这里插入图片描述

3:数组运算

数组的运算包括加、减、乘、除、乘方于运算,以及数组的数字函数运算。

import numpy as np
A=np.array([[1,2],[3,4]])
B=np.array([[5,6],[7,8]])

c1=A-B
c2=A+B
c3=A*B
c4=A/B
c5=A/3
c7=A**2


#数学运算
e1=np.sqrt(A) #取平方根
e2=np.abs([1,-2,-100])  #绝对值,列表里的值进行取绝对值
e3=np.cos([1,2,3])   #cos值
e4=np.sin(A)    #sin值
e5=np.exp(A)    #取指数函数值

4:数组切片

常见数组的切片方法

D【①,②】:①:为对D的行下标控制,不能超过最大行数;②:为对D的列下表进行控制,不能超过最大列数

1:数组无直接访问下标值的过程

B11=D[[2,3],[2,3]]
print(B11)

在这里插入图片描述

总结:
2:设置行号和列号同时加上【】,相对应输出值,中括号限制输出,输出前后对应位置,放入一个【】中
3:数据没有维度输出一列
4:冒号前后值取左不取右

# -*- coding: utf-8 -*-
"""
Created on Mon Apr 26 15:23:53 2021

@author: Administrator
"""
import numpy as np

D=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])

#访问D中行为1,列为2的数据
#d1=D.index(1)没有下标访问的形式
B1=D[1,2]
#访问D中第1 ,3列数据
B2=D[:,[1,3]]

#访问D中第1,3行数据
B3=D[[1,3],:]

#取D中满足第0列大于5的所有列数据
C=D[D[:,0]>5,:]
#取D中满足第0列大于5的第1,2列数据
tt=[False,True,True,False]
#取D中满足第0中大于5的第2,3列数据

C1=D[D[:,0]>5,[2,3]]
C2=D[D[:,0]>5,2:4]    
C3=D[D[:,0]>5,1:3]                                                                                                                                                                                                                                                                                                                                                                                      
D7=D[D[:,0]>5,tt]
TF=[True,False,True,False]
#取D中第0,3行的所有列数据,本质上行及控制为逻辑列表,去逻辑值为真
D1=D[TF,:]
#取出第一行
A=D[1]

A1=D[1,:]
#取出第一列
B=D[:,1]

B1=D[D[:,0]<=5,:]


#取出第0,3行的2,3列的元素
Dt4=[D[TF,2:4]]


#取出D中大于4的数据
Dt5=D[D>4]

#取中间几个元素,6,7,10,11
middle=D[1:3,1:3]

利用ix_()函数进行数组切片(大众的切片逻辑)

1:取相关行对应列的所有数值而不是单个
2:对应列标不用做取舍,只有在:的时候取左不取右

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 27 09:54:51 2021

@author: Administrator
"""
import numpy as np
D=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
#取第1,2行,1,3列
D3=D[np.ix_([1,2],[1,3])]
#取0,1行,1,3列
D4=D[np.ix_(np.arange(2),[1,3])]
#取第一列小于11,列数为1,2行的所有元素
D6=D[np.ix_(D[:,1]<11,[1,2])]

#取第一列小于11,列数为2行的所有元素
D7=D[np.ix_(D[:,1]<11,[2])]

TF=[True,False,False,True]
D8=D[np.ix_(TF,[2])]

D9=D[np.ix_(TF,[1,3])]

在这里插入图片描述

5:数组连接:

数据处理,多个数据源的集成整合是经常发生的。数组间的集成与整合主要体现在数组间的连接,包括**水平hstack()垂直vstack()**两种方式。

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 27 10:07:07 2021

@author: Administrator
"""

import numpy as np
a=np.array([[1,2],[3,4],[5,6]])
b=np.array([[7,8],[9,10],[11,12]])
c_s=np.hstack((a,b))
c_v=np.vstack((a,b))
#
d=np.array([[7,8],[9,10],[11,12],[13,14]])
#D_s=np.hstack((a,d))
D_v=np.vstack((a,d))


z=np.array([[7,8,0],[9,10,0],[11,12,13]])
D_s=np.hstack((a,z))

水平:
在这里插入图片描述
垂直:
在这里插入图片描述
垂直:只要行数相同,就可以进行垂直连接vstack(),列数相不相同无关
在这里插入图片描述

水平:只要行数相同,就可以进行水平连接hstack(),列数相不相同无关
在这里插入图片描述

6:数据存取

import numpy as np
A=np.array([[1,2],[3,4],[5,6]])
B=np.array([[7,8],[9,10],[11,12]])
C_s=np.hstack((A,B))
#C_s数据集保存为二进制数据文件data.npy
np.save('data',C_s)

V_s=np.load("data.npy")

在这里插入图片描述

7:数组形态变换

数组都不能改变值
reshape函数:用于改变数组形态:一维数组变多维数组
reval函数:多维数组变成一维数组

import numpy as np
arr=np.arange(12)
#reshape一维数组变多维
arr1=arr.reshape(2,6)
#ravel多维数组变一维
arr2=arr1.ravel()

**加粗样式**

8:数组排序与搜索

sort():从小到大的顺序排序
argmin():返回待搜索数组的最小值
argmax():返回待搜索数组的最大值

argmax(arr1,axis=0或axis=1)
axis=0:返回各列中最大值的索引值
axis=1:返回各行中最最大值的索引值

argmin(arr1,axis=0或axis=1)
axis=0:返回各列中最小值的索引值
axis=1:返回各行中最小值的索引值

9:矩阵与线性代数运算

1:创建Numpy矩阵

mat(),mtrix(),bamt()

2:矩阵的属性和基本运算

3:线性代数运算

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Recently 祝祝

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

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

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

打赏作者

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

抵扣说明:

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

余额充值