学习笔记:Numpy数据处理快速上手教程

01 numpy创建数组

知识点:

  1. 一般使用list类型创建矩阵,然后np.array()转换成数组;
  2. (维度)数组名.ndim; (形状)数组名.shape; (元素个数)数组名.size
  3. 控制元素类型,np.array(xxx,dtype=int),也可以是float
  4. 二维数组即[[],[]]
  5. 元素全为0:np.zeros((行数,列数));元素全为1:np.ones((行数,列数));
  6. 自动生成数组两种方法:
    法一:np.arange(起始元素,结尾元素但取不到,步长) 若np.arange(5),此处5表示的是元素个数,起始元素为0
    法二:np.linspace(起始元素,结尾元素取得到,多少段)
    其他:数组元素随机生成,np.random.random((行数,列数))
  7. 改变数组形状:
    数组名.reshape((行数,列数))
import numpy as np

'''
列表list表示矩阵:
        [[1,2,3],
        [2,3,4]]
'''
# 一般使用list类型  然后转换成数组
array = np.array([[1,2,3],
                  [2,3,4]])
print(array)
# 维度  数组名.ndim
# 形状  数组名.shape
# 元素个数   数组名.size
print('number of dim:',array.ndim)
print('shape:',array.shape)
print('size:',array.size)

print('----------一维类型-----------')
# dtype可以是int 也可以是float
array1 = np.array([1,2,23],dtype=np.float)
print(array1.dtype)

print('----------二维类型-----------')
array2= np.array([[1,3,5],
                  [3,4,5]])
print(array2)

print('----------元素全为0的矩阵-----------')
a = np.zeros((2,3))
print(a)
print('----------元素全为1的矩阵-----------')
b = np.ones((2,3))
c = np.ones((2,3),dtype=float)
print('b type:%s , c type:%s'%(b.dtype,c.dtype))
print(b)
print(c)

print('----------np.arange自动生成数组-----------')
# np.arange(起始元素,结尾元素但取不到,步长)
# reshape((行数,列数))
array3 = np.arange(1,13,1)
array3_reshape = array3.reshape((3,4))
print(array3)
print(array3_reshape)

print('----------np.linspace自动生成数组-----------')
# np.linspace(起始元素,结尾元素取得到,多少段)
array4 = np.linspace(1,14,20)
print(array4)
print(array4.reshape((4,5)))

02 numpy数组运算

知识点:

  1. 数组元素n次方:数组名**n
  2. sin:np.sin(数组名),np.cos(数组名)
  3. 判断数组大于n的元素,print(数组名>n)
  4. 数组1*数组2 表示元素逐个相乘
    矩阵乘法 np.dot(数组1,数组2) 或者 数组1.dot(数组2)
  5. np.random.random((行数,列数)),随机生成元素
  6. 求数组里面的最大值,min,sum np.max(数组名) 如果是对行做运算,则使用axis=1,如果对列做运算,则axis=0
  7. 数组的平均值 np.mean(数组名) 数组名.mean() np.average(数组名) 数组名.average()
  8. np.cumsum(数组名) 元素值累加
  9. np.diff(数组名) 两个元素之间的差
  10. np.nonzero(数组名) 输出非零值的索引值
  11. np.sort(数组名) 每一行开始排序 np.transpose(数组名) 表示矩阵转置
  12. np.clip(数组名,数组中的最小值,数组中的最大值)
import numpy as np

print('------一维运算--------')
a = np.array([2,3,4,5])
b = np.arange(4)
print(b)
chengfang = a**2
print(chengfang)
jian = b-a
print(jian)
jia = b+a
print(jia)
sin = 10*np.sin(a)
print(sin)
cos = np.cos(a)

print('------判断数组元素范围------')
# 判断数组元素范围
print(a>=3)

print('------二维数组运算------')
array1 = np.array([[1,2],
                   [3,5]])
array2 = np.linspace(2,8,4).reshape((2,2))
# print(array1)
# print(array2)
# 数组1*数组2  表示元素逐个相乘
c = array1*array2
# 矩阵乘法 np.dot(数组1,数组2)  或者 数组1.dot(数组2)
c_dot =np.dot(array1,array2)
c_dot_2 = array1.dot(array2)
print(c)
print(c_dot)
print(c_dot_2)

print('------随机生成元素------')
random_array = np.random.random((2,3))
print(random_array)
# 求数组里面的最大值,min,sum np.max(数组名)
print(np.max(random_array))
print(np.min(random_array))
print(np.sum(random_array))
# axis=1  行运算   axis=0   列运算
print(np.sum(random_array,axis=1))

print('------打印索引值------')
# 打印最小值索引值  np.argmin()   最大值索引值 np.argmax()
# 数组的平均值  np.mean(数组名)  数组名.mean()   np.average(数组名)  数组名.average()
# np.cumsum(数组名)  元素值累加
# np.diff(数组名)  两个元素之间的差
# np.nonzero(数组名)  输出非零值的索引值
# np.sort(数组名) 每一行开始排序  np.transpose(数组名) 表示矩阵转置
# np.clip(数组名,数组中的最小值,数组中的最大值)
A = np.arange(2,14).reshape((3,4))
print(np.argmin(A))
print(np.argmax(A))
print(np.mean(A))
print(np.average(A))
print(np.cumsum(A))
print(np.diff(A))
print(np.nonzero(A))
print(np.clip(A,3,8))

03 数组的index

知识点:

  1. 索引值从0开始 数组名[index]取值
  2. 数组循环,自动迭代行。如果需要迭代列,则转置矩阵 数组名.T
  3. 如果需要迭代每一个元素 则用数组名.flat拉平成一行 数组名.flatten()扯成一行
import numpy as np

# 索引值从0开始  数组名[index]取值
a = np.arange(3,15)
print(a)
print(a[3])

b = a.reshape((3,4))
print(b)
print(b[1,1])
print(b[1][1])
print(b[:,0])

# 数组循环,自动迭代行。如果需要迭代列,则转置矩阵 数组
for row in b:
    print(row)

for column in b.T:
    print(column)

# 如果需要迭代每一个元素  则用数组名.flat拉平成一行
print(b.flatten())
for item in b.flat:
    print(item)

04 numpy的数组合并、分割、赋值&copy()

知识点:

  1. vertical stack 垂直合并 np.vstack(())
  2. horizontal stack 水平合并 np.hstack()
  3. np.concatenate((数组1,2,3…),axis=0) 多个数组合并
  4. 一维数组变成二维数组 数组名[np.newaxis,;],也可以使用reshape()更加方便
  5. np.split(数组名,多少列,axis=1表示对横向切割,列没变)
  6. 赋值是指向同一个地址,改变其中的数组一个元素值,另外的数组也会发生改变 。
  7. 深拷贝 数组名.copy() 只会复制,但是数组之间不会关联
import numpy as np

print('---------合并---------')
a = np.array([1,1,1])
b = np.array([2,2,2])
# vertical stack 垂直合并 np.vstack(())
c = np.vstack((a,b))
# horizontal stack 水平合并  np.hstack()
d = np.hstack((a,b))
print(c.shape,d.shape)
# 一维数组变成二维数组  数组名[np.newaxis,;],也可以使用reshape()更加方便
# np.concatenate((数组1,2,3....),axis=0) 多个数组合并
print(a)
print(a.shape,a[np.newaxis,:].shape)
print(a)

print('---------分割---------')
# np.split(数组名,多少列,axis=1表示对横向切割,列没变)
c = np.arange(12).reshape((3,4))
print(c)
print(np.split(c,2,axis=1))
print(np.vsplit(c,3))
print(np.split(c,3,axis=0))

print('---------copy---------')
# 赋值是指向同一个地址,改变其中的数组一个元素值,另外的数组也会发生改变
# 深拷贝  数组名.copy()  只会复制,但是数组之间不会关联
a1 = np.arange(4)
a2 = a1
print(a1)
a1[0]=0.5  # 奇怪的是改为浮点数不会改变,因为默认整型
print(a1)
print(a2)
a3 = a1.copy()
a1[0]=10
print(a1)
print(a2)
print(a3)

链接: 【莫烦Python】Numpy & Pandas (数据处理教程).

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值