python之numpy基础

这篇博客详细介绍了NumPy库中的数组操作,包括数组的求和、求最小值和最大值、取平均值、累加和累差、索引位置的值、排序、转置、修剪数据、切片操作、迭代器、数组合并与分割、以及数组的复制和视图。这些内容涵盖了NumPy基础操作的各个方面,对于理解和使用NumPy处理数组数据非常有帮助。
摘要由CSDN通过智能技术生成
import numpy as np

# a=np.array([[10,20],
#            [30,40]])
# b=np.arange(2,14).reshape(3,4)
# #阵列按行求和
# print(np.sum(b,axis=1))
# #阵列按列求和
# print(np.sum(b,axis=0))
# #阵列中最小值
# print(np.min(b),np.max(b))
#
# #随机产生阵列,2行4列
# c=np.random.random((2,4))
# print(c)

# #找阵列中索引位置的值
# b=np.arange(2,14).reshape(3,4)
# print(np.argmin(b))
# #返回0,说明最小的值是索引值为0
# print(np.argmax(b))
# #返回11,说明最大的值是索引值为11

# #取平均值,mean和average效果一样
# b=np.arange(2,14).reshape(3,4)
# print(np.mean(b))
# print(np.average(b))

# #求累加和累差
# b=np.arange(2,14).reshape(3,4)
# print(np.cumsum(b))
# #返回[ 2  5  9 14 20 27 35 44 54 65 77 90]
# print(np.diff(b))
# #返回
# # [[1 1 1]
# # [1 1 1]
# # [1 1 1]]

# #取阵列每个值所在第几行和第几列
# #返回两个数组,第一个是按行统计,第二个是按列统计
# b=np.arange(2,14).reshape(3,4)
# print (np.nonzero(b))
# #返回(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))

# #排序
# b=np.arange(14,2,-1).reshape(3,4)
# print(b)
# print(np.sort(b))

# #阵列的转置,行变列,列变行
# b=np.arange(2,14).reshape(3,4)
# print(b)
# print('\n')
# #这两种用法一样
# print(np.transpose(b))
# print(b.T)

# #修剪数据,下列中将少于5的数值改成5,将大于9的数值改在9
# b=np.arange(2,14).reshape(3,4)
# print(np.clip(b,5,9))
# #返回:
# #[[5 5 5 5]
# # [6 7 8 9]
# # [9 9 9 9]]

# #数列的切片操作
# b=np.arange(2,14).reshape(3,4)
# print(b)
# #取数列的第2行
# print(b[1])
# #取数列从第2行开始到数列后面所有值
# print(b[1:])
# #取数列的第2列第2列
# print(b[1][1])
# print(b[1,1])
# #取数列的所有行的第2列
# print(b[:,1])
# #取数列的第2行的第2~3的值
# print(b[1,1:3])

# #迭代器
# b=np.arange(2,14).reshape(3,4)
# print(b)
# #通过flatten()可以降维数组
# print(b.flatten())
# #通过flat方法可以生成迭代器
# for item in b.flat:
#     print (item)
#
# #按照列进行迭代,先通过T方法进行列转换
# for item in b.T.flat:
#     print (item)

# a=np.array([1,1,1])
# b=np.array([2,2,2])
# print(np.vstack((a,b)))
# #vertical stack
# #返回,通过vstack将a,b合并成一个数列
# #[[1 1 1]
# # [2 2 2]]
# c=np.vstack((a,b))
# print (a.shape,c.shape)
# #返回(2, 3),代表新的数列是2行3列
# #返回(3,) (2, 3)
#
# print(np.hstack((a,b)))
# #horizontal stack
# #返回:[1 1 1 2 2 2]
# d=np.hstack((a,b))
# print (a.shape,d.shape)
# #返回:(3,) (6,)

# #通过newaxis方法,将数列增加一个维度
# a = np.array([1, 1, 1])[:,np.newaxis]
# b=np.array([2,2,2])[:,np.newaxis]
# print (a)
# #[[1]
# # [1]
# # [1]]
# print (b)
# #[[2]
# # [2]
# # [2]]
# #将a,b进行合并
# d=np.hstack((a,b))
# print (d)
# #返回
# #[[1 2]
# # [1 2]
# # [1 2]]
# print (a.shape,d.shape)
# #返回:(3, 1) (3, 2)
# #(3, 1) 代表a为三行一列的数列,合并后的d变成了3行2列的数列

# #另外一种合并方法:
# a = np.array([1, 1, 1])[:,np.newaxis]
# b=np.array([2,2,2])[:,np.newaxis]
# c=np.concatenate((a,b,a,b),axis=1)
# print(c)
# #返回:
# #[[1 2 1 2]
# # [1 2 1 2]
# # [1 2 1 2]]

# #通过split将数组进行分割
# a=np.arange(12).reshape(3,4)
# print (a)
# print(np.split(a,2,axis=1))
# #axix代表按列进行切分,最后生成了2个数组
# #返回结果:
# # [array([[0, 1],
# #        [4, 5],
# #        [8, 9]]), array([[ 2,  3],
# #        [ 6,  7],
# #        [10, 11]])]
# c=np.split(a,2,axis=1)
# #通过shape查看这两个数组的结构
# print (c[0].shape)
# print (c[1].shape)
# #返回结果:
# # (3, 2)
# # (3, 2)
# #说明每个数组都是三行2列的
#
# #下面将3行4列的数组分割成1行4列
# #axis=0表示对行进行操作,axis=1表示对列进行操作
# d=np.split(a,3,axis=0)
# print(d)
# print (d[0].shape)
# # 返回结果:
# # [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
# # (1, 4)

# #如果将数组分割成不等列时就会出错,如下:
# a=np.arange(12).reshape(3,4)
# print(np.split(a,3,axis=1))
# #返回:ValueError: array split does not result in an equal division
# @#array_split方法可以进行不对等的分割
# print(np.array_split(a,3,axis=1))
# # 结果如下:
# # [array([[0, 1],
# #        [4, 5],
# #        [8, 9]]), array([[ 2],
# #        [ 6],
# #        [10]]), array([[ 3],
# #        [ 7],
# #        [11]])]
# d=np.array_split(a,3,axis=1)
# print (d[0].shape)
# print (d[1].shape)
# print (d[2].shape)
# #返回结果:
# # (3, 2)
# # (3, 1)
# # (3, 1)
# #这样把一个3行4列的数组,分割成了一个3行2列,以及2个3行1列的数组

# #和数组合并的vstack和hstack相似,分割数组也有vsplit和hsplit
# a=np.arange(12).reshape(3,4)
# print(a)
# #横向分割
# print(np.vsplit(a,3))
# print('\n')
# #纵向分割
# print(np.hsplit(a,2))

# a=np.array([10,20,30,40])
# b=a
# a[0]=55
# print(a)
# print(b)
# #返回
# # [55 20 30 40]
# # [55 20 30 40]
# #将a赋值给b,a的值改变之后,b的值也跟着改变了
# #这里和认知上的理解不一样
# b[1]=100
# print(a)
# print(b)
# #改变b的值,a居然也跟着变了,所以numpy的赋值和python的赋值不一样
# #numpy的赋值只是一个指针,和软链接一样
# # [ 55 100  30  40]
# # [ 55 100  30  40]

# #copy方法,就是传统意义上的赋值
# a=np.array([10,20,30,40])
# b=a.copy()
# a[0]=55
# print(a)
# print(b)
# #返回
# # [55 20 30 40]
# # [10 20 30 40]
# #b的值不会跟着a改变,它们都是一个独立的变量,不受其它变量影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值