数据分析-numpy学习

今天和大家分享下最近学习的一些numpy知识,这些都是我一个一个手动码出来的,有兴趣的同事可以一起学习一下。

创建一维数据

创建二维数组

常用属性

调整数组的形状

将数组转换成list形式   

数组和数的计算

三维数组

数组的索引与切片

数组中数值的修改

数组的添加、删除与去重

numpy的计算

数组的拼接

二维数组的转置


创建一维数据

import numpy as np
list1 = [1,2,3,4]
oneArray = np.array(list1)
print(type(oneArray))
print(oneArray)

#创建数组的形式
#1 直接传入列表的形式
t1 = np.array([1,2,3])
print(t1)

#2 传入range生成序列
t2 = np.array(range(100))
print(t2)

#使用numpy自带的np.arrange()生成数组
t3 = np.arange(0,12,2)
print(t3)

创建二维数组


list2 = [[1,2],[3,4],[5,6]]
twoArray = np.array(list2)
print(twoArray)

常用属性

#获取形状
print(twoArray.shape)
#有多少个元素
print(twoArray.size)

调整数组的形状


import numpy as np

four = np.array([[1,2,3],[4,5,6]])
#修改的是原有的
# four.reshape=(6,)
# print(four)
#返回一个新的数组
five= four.reshape(2,3)
print(five)
#多维数组变成一位数组,默认情况下‘C’是以行为主的顺序展开,‘F’是以列为主的顺序展开
six = four.reshape((6,),order = 'F')
print(six)

将数组转换成list形式   

                                                                                                                                                                     
import numpy as np 
a = np.array([3,5,6,8,9,12])
b = a.tolist()
print(b)
print(type(b))

#将数组转换成list形式
import numpy as np 
a = np.array([3,5,6,8,9,12])
b = a.tolist()
print(b)
print(type(b))

数组和数的计算


import numpy as np
t1 = np.arange(24).reshape(3,8)
print(t1)
print(t1+2)
print(t1*2)
print(t1/2)

#数组与数组之间的操作,注意不同形状的多维数组不能进行计算
import numpy as np

# t1 = np.arange(24).reshape((4,6))
# t2 = np.arange(100,124).reshape((4,6))
# print(t1)
# print(t2)
# print(t1+t2)
# print(t1*t2)

#行数或者列数相同的一维数组和多维数组可以进行计算
# t1 = np.arange(24).reshape((4,6))
# t2 = np.arange(0,6)
# print(t1)
# print(t2)
# print(t1-t2)

#列形状相同(会与每一个相同维度的数组的对应位相操作)
t1 = np.arange(24).reshape((4,6))
t2 = np.arange(4).reshape((4,1))
print(t1)
print(t2)
print(t1-t2)

三维数组


import numpy as np

a = np.arange(27).reshape(3,3,3)
print(a)
b = np.sum(a,axis=0)
print(b)

数组的索引与切片


import numpy as np

a = np.arange(10)
#冒号分割切片参数 start:start:stop 来进行切片操作
print(a[2:7:2])
#如果为[2:],表示从该索引往后的所欲项目都会被提取
print(a[2:])

#多维数据的索引
import numpy as np
t1 = np.arange(24).reshape((4,6))
# print(t1)
# print("******")
# print(t1[1])
# print(t1[1:,:])  #去取连续多行
# print(t1[1:3])  #取连续多行
# print(t2[[1,2,3]])  #取不连续的多行

# print(t1[:,2])  #取一列
# print(t1[:,1:])  #取连续多列
# print(t1[2,3]) #取某一个值
# print(t1[[2,3],[2,3]]) #取多个不连续的值
#print(t[2:3])

数组中数值的修改


import numpy as np

t = np.arange(24).reshape(4,6)
print(t)

#修改某一行的值
#t[2,:] = 0

#修改某一列的值
# t[:,3] = 0
# print(t)

#连续修改多行的值
# t[1:3,:] = 0
# print(t)

#修改连续多列的值
# t[:,1:4] = 0 
# print(t)

#修改多行多列的值
# t[1:4,2:3]=0
# print(t)

#修改多个不相邻的值
# t[[2,3],[1,2]] = 0
# print(t)

#可以根据条件修改,比如讲小于10的值改掉
t[t<10] = 0
print(t)

#使用逻辑判断
# t[(t<2)&(t<6)] = 0  #与
# print(t)
# t[(t<2)|(t>6)] = 0  #或
# print(t)
# t[~(t>6)] = 0  #非
# print(t)

数组的添加、删除与去重

import numpy as np

# a = np.arange(1,7).reshape(2,3)
# print(a)
# a = np.array([[1,2,3],[4,5,6]])
# print(a)
# print('向数组添加元素')
# print(np.append(a,[7,8,9]))  #axis默认为None时,是横向加成,返回总是一维数组!
# print('\n')
# print('沿轴0添加元素')
# print(np.append(a,[[7,8,9]],axis = 0))
# print('沿轴1添加元素')
# print(np.append(a,[[5,5,5],[7,7,7]],axis = 1))

#numpy.insert  函数在给定索引之前,沿给定轴在输入数组中插入值
#如果值的类型转换为要插入,则它与输入数组不同,插入没有原地的,函数会返回一个新数组。此外,如果未提供轴,则输入数组会被展开
a = np.array([[1,2],[3,4],[5,6]])
print(a)
print('未传递Axis参数,在插入前输入数组会被展开')
print(np.insert(a,4,[11,12]))
print('\n')
print('传递了Axis参数,会广播值数组来配输入数组')
print('沿轴0广播:')
print(np.insert(a,1,[11],axis = 0))
print('沿轴1广播:')
print(np.insert(a,1,[11],axis = 1))

#数组中的删除
import numpy as np

a = np.arange(12).reshape(3,4)
print('未传递axis参数,在删除之前数组会被展开')
print(np.delete(a,1))
print('删除每一行中的第二列')
print(a)
print(np.delete(a,1,axis = 1))

#数组去重
#numpy.unique() 函数用于去除数组中的重复元素
'''
arr:输入一维数组,如果不是一维数组则会被展开
return_index:如果为True,返回新列表元素则在旧列表中的位置(下标),并以列表形式存储
return_inserve:如果为true,返回旧列表元素则在新列表中的位置(下标),并以列表形式存储
return_counts:如果为true,返回去重值的元素在原数组中出现的次数
'''
import numpy as np

a = np.array([2,3,4,7,7,8,9,5,4,6,7,8,])
print('第一个数组是:')
print(a)
print('第一个数组的去重值')
u = np.unique(a)
print(u)
# print('去重数组的索引数组:')
# u,indices = np.unique(a,return_index = True)
# print(indices)
print('去重数组的下标')
u,indices = np.unique(a,return_inverse = True)
print(indices)
print('返回去重元素的重复数量')
u,indices = np.unique(a,return_counts = True)
print(u)
print(indices)

numpy的计算


import numpy as np
score = np.array([[86,88],[89,87],[66,68]])
print(score)
#获取所有数据的最大值
# result = np.max(score)
# print(result)
#获取某一轴上的最大值
# result= np.max(score,axis = 1)
# print(result)
#获取最小值
# result = np.min(score)
# print(result)
#获取某一轴上的最小值
# result = np.min(score,axis = 0)
# print(result)

#数组的比较
# result = np.maximum([-2,-1,0,1,2],0)  #第一个参数中的每一个值与第二个参数的值作比较返回最大的值
# print(result)
# result = np.minimum([-2,-2,-1,-3],0)#第一个参数中的每一个值与第二个参数的值作比较返回最小的值
# print(result)
# result = np.maximum([-2,-3,-1,-4],[-2,-3,-5,8]) #接受的2个参数,也可以大小不一致
# print(result)

#求平均值
# result = np.mean(score)
# print(result)

#返回给定axis上的累计和
# arr = np.array([[1,2,3],[4,5,6]])
# print(arr)
# print(arr.cumsum(0))
# print(arr.cumsum(1))

#求最小索引值
# result = np.argmin(score,axis = 0)
# print(result)

#求每一列的标准差
# result = np.std(score,axis = 0)
# print(result)

#求极值
result = np.ptp(score)
print(result)

数组的拼接


import numpy as np 
#1、根据轴连接的数组序列
a = np.array([[2,3],[4,5]])
b = np.array([[6,7],[8,9]])
# #要求维度相同
# print('沿轴0连接2个数组')
# print(np.concatenate((a,b),axis = 0))
# print('沿轴1连接2个数组')
# print(np.concatenate((a,b),axis = 1))

#2、根据轴进行堆叠
# print('沿轴0连接2个数组')
# print(np.stack((a,b),axis = 0))
# print('沿轴1连接2个数组')
# print(np.stack((a,b),axis = 1))

#3、矩阵垂直拼接
v1 = np.arange(0,12).reshape(2,6)
v2 = np.arange(12,24).reshape(2,6)
result = np.vstack((v1,v2))
print(result)

#4矩阵水平拼接
result = np.hstack((v1,v2))
print(result)

二维数组的转置

#对换数组的维度
a = np.arange(12).reshape(3,4)
# print('原数组:')
# print(a)
# print('对换数组')
# print(np.transpose(a))

#与transpose一致
a = np.arange(12).reshape(3,4)
print('原数组:')
print(a)
print('\n')
print('转置数组')
print(a.T)

#函数用于交换数组的2个轴

a = np.arange(24).reshape(4,6)
re = a.swapaxes(1,0)
print(a)
print(re)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值