10分钟学会Numpy,详细Numpy知识点处理数据使用方法实践笔记,总结不易

NumPy

import numpy as np

array创建数组对象:

item,items=[1,2,3,4],[[1,2],[3,4]]
​
w1,w2=array(item),array(items)
​
w1=[1 2 3 4]    w2=[[1 2] [3 4]]

指定dtype:

w3 = np.array([1,2,3,4],dtype ="float64" )
​
print(w3.dtype)
​
float64

arange创建数组:

lists=np.arange(4)
[0 1 2 3]
​
np.arange(0,1,0.2)
[0. 0.2 0.4 0.6 0.8]

linspace创建数组:

np.linspace(0,1,5)  #包含,一共五项
[0.,0.25,0.5,0.75,1.]

logspace创建数组:

np.logspace(0,1,5)
#生成1~10具有五个的等比数列
logspace起始位和终止位默认为10的幂,第三个参数为个数
[1. 1.7782,3.1622,5.6234.10.]

zeros全0数组:

np.zeros(4)
[0 0 0 0]
​
np.zero([2,2])
[ [0 0]
  [0 0] ]

ones全1数组:

np.ones() #同上使用

diag对角线矩阵:

np.diag([1,2,3,4]) #eye函数可以创建对角线为1其他全0
​
[[1 0 0 0]
 [0 2 0 0]
 [0 0 3 0]
 [0 0 0 4]]

numpy创建的ndarray对象主要属性有:

ndim 秩,既数据轴的个数

shape 数组的维度

size 数组元素个数

dtype 数据类型

itemsize 数组中每个元素的大小

w1 = np.array([1,2,3][4,5,6])
​
w1.ndim -->2
w1.shape -->(2,3)#形状为
w1.size --> 6 #元素个数
​

shape 可以重新转换形状:

w1.shape=3,2
​
[[1 2]
 [3 4]
 [5 6]]

astype数组的类型转换

w2 = np.array([1,2,3],dtype="float64")
w2.astype(np.int32)

生成随机数 np.random

np.random.randint(10,20,size=(2,3))
[[12 15 18] 
 [11 13 19]]
 
 #rand 生成(0,1)之间的随机数
 np.random.rand(2)   np.random.rand(2,3) 
 [0.8272 0.3423]      [[x x x][x x x]]
 

random模块常用的随机数生成函数:p35

reshape 改变数据维度

w1 = np.array(6)
w1.reshape(3,2)
#若其中一个参数设置为-1,则会由另一个数自动计算
[[0 1]
 [2 3]
 [4 5]]

数据扁平化(flatten)/数据散开(ravel)

w1 = np.arange(6).reshape(3,2)
#不会改变原来w1的数组
w2 = w1.ravel()
[0 1 2 3 4 5]

数组合并:

横向合并:np.hstack(n1,n2)

纵向合并:np.vstack(n1,n2)

通用合并:np.concatenate(n1,n2,axis=1/0)#1为横向,0为纵向

数组切割:(数组,切割数量)

横向切割:np.hsplit(n1,2)

纵向切割:np.vsplit(n1,2)

通用切割:np.split(n1,2,axis=1/0)#1为横向,0为纵向

数组转直和轴对换:

import numpy as np
arr = np.arange(9).reshape(3,3)
ar = arr.transpose(0,1)   #(1,0)则是原始的
print(ar)
​
print(arr.T)#T属性直接进行转置
​
print(arr.swapaxes(0,1))#数组的轴对换
​
[[0 1 2]
 [3 4 5]
 [6 7 8]]

一维数组的索引:

与列表索引一致

数组元素的复制:

arr=[0 1 2 3 4 5 ]

arr1=arr[-4:-1].copy()

arr1-->[2 3 4]

数组索引:

import numpy as np
arr = np.arange(12).reshape(3,4)
print(arr)-->
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 
print(arr[1:3,0:4])-->
[[ 4  5  6  7]
 [ 8  9 10 11]]
 
print(arr[:,(0,2)])-->#()指定位置
[[ 0  2]
 [ 4  6]
 [ 8 10]]
mask=np.array([1,0,1],dtype="bool")
print(arr[mask,3])-->[3 11]
​
print(arr[mask,0:3])-->
[[ 0  1  2]
 [ 8  9 10]]
 
 print(arr[mask,(1,2)])-->[1 10]
​

ufunc运算机制:

+-*/**相同个数时为一一对应处理

比较运算,返回的是一一对应的bool值

要轴长度相同才能运算,若只给了一行且数量相同,则按照此行向每一行做运算处理·

where的用法:

Np.where(condition,x,y)

condition为条件,成立输出x,否则输出y

如果只使用np.where(condition),则返回符合要求的下标数组

numpy数组读/写:

arr = np.arange(12).reshape(3,4)
np.save("a.npy",arr)#写
print(arr)
c=np.load("a.npy")#读
print(c)

读写成文件txt格式:

arr = np.arange(12).reshape(3,4)
np.savetxt("a1.txt",arr)
a1=np.loadtxt("a1.txt")
np.savetxt("a2.txt",a1,fmt="%d",delimiter=",")
#改为保存为整数,以逗号分隔
a2 = np.loadtxt("a2.txt",delimiter=",")#指定读取以逗号分隔

读取csv文件:

np.loadtxt(fname,delimiter,usecols,unpack,skiprows,encoding)

fname str,读取的 CSV 文件名 delimiter str,数据的分隔符 usecols tuple(元组),执行加载数据文件中的哪些列 unpack bool,是否将加载的数据拆分为多个组,True 表示拆,False 表示不拆 skiprows int,跳过多少行,一般用于跳过前几行的描述性文字 encoding bytes,编码格式

数组排序:

arr=np.array([9,3,2,1,4,5,6,7,8])
print(arr.sort())
[1 2 3 4 5 6 7 8 9]

横纵排序sort:

arr=np.array([9,3,2,1,4,5,6,7,8]).reshape(3,3)
arr.sort(axis=1)
print(arr)-->
[[2 3 9]
 [1 4 5]
 [6 7 8]]
 
arr.sort(axis=0)
print(arr)-->
[[1 3 5]
 [2 4 8]
 [6 7 9]]
​
​

返回下标的排序argsort,lexsort

argsort():

arr=np.array([9,3,2,1,4,5,6,7,8])
print(arr.argsort())#返回排序位置的下标组
print(arr[arr.argsort()])#根据下标定位出排序后的组
[3 2 1 4 5 6 7 8 0]
[1 2 3 4 5 6 7 8 9]

lexsort():参数为元组(排序的数组,下标位置数组)

a=[1,2,0]
b=[9,7,8]
ind = np.lexsort((b,a))
print(ind)-->[7 8 9]

去重unique:

names = np.array([1,2,1,2,3,5,2,3])
name = np.unique(names)
#返回 去重后的数据
na = np.unique(names,return_counts=True)
#返回(array([1, 2, 3, 5]), array([2, 3, 2, 1])) 可由na[1]提取含有的数量情况
​
df.列.nunique() -->返回去重后数量

重复数据:tile与repeat

arr = np.arange(5)
arrs = np.tile(arr,3)
print(arrs)
[0 1 2 3 4 0 1 2 3 4 0 1 2 3 4]

repeat: axis为1则由列重复,axis为0则由行重复

arr = np.arange(6).reshape(2,3)
arrs = arr.repeat(2,axis = 0)
arrs1 = arr.repeat(2,axis = 1)
print(arrs)
print(arrs1)
[[0 1 2]
 [0 1 2]
 [3 4 5]
 [3 4 5]]
 
[[0 0 1 1 2 2]
 [3 3 4 4 5 5]]

常用的统计函数:

sum ,mean , std ,ver,min,max
​
和,平均值,标准差,方差,最小,最大

当axis参数为1时:横轴进行计算

当axis参数为0时候:纵轴进行计算

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hares_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值