numpy简单操作

1.delete()函数

#numpy.delete(arr,obj,axis=None)
#axis 表明哪个维度的向量应该被移除
#axis 如果为None,则需要先将矩阵拉平,在删去第obj的元素
#obj 表明axis维度的哪一行(或列)应该被移除。

代码示例:

import numpy as np
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
p1 = np.delete(matrix, 1, 0) # 第0维度(行)第1行被删除(初始行为0行)
print('>>>>p1>>>>\n',p1)
p2 = np.delete(matrix, 1, 1) # 第1维度(列)第1行被删除
print('>>>>p2>>>>\n',p2)
p3 = np.delete(matrix, 1) # 拉平后删除第1个元素(初始为第0个)
print('>>>>p3>>>>\n',p3)
p4 = np.delete(matrix, [0,1], 1) # 第1维度(列)第0、1行被删除
print('>>>>p4>>>>\n',p4)

结果:

2.insert()函数

#numpy.insert(arr,obj,value,axis=None)
#value 为插入的数值
#arr 为目标向量
#obj 为目标向量的axis维度的目标位置
#axis 为想要插入的维

 代码示例:

import numpy as np
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
q1 = np.insert(matrix, 1, [1,1,1,1], 0) # 第0维度(行)第1行添加[1,1,1,1]
print('>>>>q1>>>>\n',q1)
q2 = np.insert(matrix, 0, [1,1,1], 1) # 第1维度(列)第0列添加1,1,1
print('>>>>q2>>>>\n',q2)
q3 = np.insert(matrix, 3, [1,1,1,1], 0) # 第0维度(行)第3行添加[1,1,1,1]
print('>>>>q3>>>>\n',q3)

结果:

3.append()函数

#numpy.append(arr,values,axis=None)
#将values插入到目标arr的最后,其中values与arr应该有相同维度

代码示例:

import numpy as np
matrix = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
]
m1 = np.append(matrix,[[1,1,1,1]],axis=0)
#第0维度(行)尾部添加[[1,1,1,1]],注意两个[],相同维度
print('>>>>m1>>>>\n',m1)
m2 = np.append(matrix,[[1],[1],[1]],axis=1)
#第1维度(列)尾部添加[[1],[1],[1]],注意两个[],相同维度
print('>>>>m2>>>>\n',m2)
m3 = np.append(matrix,[1,1,1,1])
#拉平后再尾部添加[1,1,1,1],这里可以[[1,1,1,1]]和[1,1,1,1]均可
print('>>>>m3>>>>\n',m3)

结果:

4. np.random.choice(a, size, replace, p)

 其作用是按要求生成一个一维数组
a是生成一维数组的来源,可以是int类型,可以是数组,也可以是list
size 数组的维度replace 表示从a中是否不重复抽取,默认可重复 p 给出抽取概率,默认随机
注意 :这里是围绕数组展开的,如果提取的也是list,可以用 from random import choice 的 choice,可用 from random import sample 随机抽取一组元素
代码示例:

import numpy as np
a1 = np.random.choice(7,5) # 从0~7中随机选择5个数组成一维数组
print(a1)

a2 = np.random.choice([0,1,2,3,4,5,6],5) # 从给定list中随机选择5个数组成一维数组
print(a2)

a3 = np.random.choice(np.array([0,1,2,3,4,5,6]),5) # 将list换成array数组依然可以运行,效果一致
print(a3)

a4 = np.random.choice([0,1,2,3,4,5,6],5,replace=False) # 上述均有重复,将replace设置为False,即可按要求没有重复的选取
print(a4)

a5 = np.random.choice(np.array([0,1,2,3,4,5,6]),5,p=[0.1,0.1,0.1,0.1,0.1,0.1,0.4]) #给出选取概率p,注意p的维度和a的维度一致,并且p中概率和为1
print(a5)

结果:

5.np.argmax(a, axis=None, out=None)

作用是返回轴的最大值的索引值
a:需要操作的数组或者矩阵,默认情况拉平成数组
axis:默认将a拉平,当axis=0对a按列取最大值索引,axis=1则对a按行取最大值索引
out:将结果写到a中

代码示例:

import numpy as np
a = np.array([[1,1,1],[2,2,2],[0,3,6]])
print(a)

b1 = np.argmax(a) # 将数组a拉平,最大值索引为9(初始索引为0)
print(b1)

b2 = np.argmax(a, axis=0) # 按列选取最大值的索引
print(b2)

b3 = np.argmax(a, axis=1) # 按行选取最大值的索引
print(b3)

结果:

6.numpy.linspace用法

numpy.linspace(start, shop, num==50, endpoint=True, retstep=False, dtype=None)
在指定间隔start到stop内返回均匀间隔的数组。
返回num均匀分布的样本,在[start, stop],默认生成50个数据
endpoint, 如果是真,则一定包括stop,如果为False,一定不会有stop
retstep,是否显示步长信息
代码示例:

import numpy as np
y1 = np.linspace(-10.0,10.0) # 默认生成50个数据
print(y1)

y2 = np.linspace(1,10,10) # 生成10个数据,包括首尾
print(y2)

y3 = np.linspace(1,10,10,endpoint=False) # 不包括尾部数据
print(y3)

y4= np.linspace(1, 10, 6, retstep=True) # 将步长与结果的数组放入一个list、
print(y4)

结果:

7.拉平操作 ravel()和faltten()及reshape(1,-1)的区别联系(补充[None,:]操作)

都是对numpy矩阵进行拉平处理,区别在于flatten()返回的仅仅是copy值,而ravel()返回的是实际的值,有点返回地址的意思。而x.reshape(1,-1)表示把向量 x reshape成一个行向量,注意的它仍然保持x的维度。
另外,Numpy中的 一维向量 有个特殊的用法,将行或者列设置成None,用来将矩阵转换成行或者列。偶尔会看到np.newaxis,这与None用法一致。

代码示例:

import numpy as np
x = np.array([[1,2,3],[4,5,6],[1,2,3]])
x.flatten()
print(x)

x.ravel()
print(x)

x.ravel('F')
print(x)

x.flatten('F')
print(x)

x.flatten()[1] = 20
print(x)

x.ravel()[1] = 20
print(x)

x.reshape(1,-1) # 注意结果仍然是二维
print(x)

x = np.array([1,2,3,6,7,8]) # 注意操作的是数组,即原x是数组
print(x)

x[:,None] # 转成列向量(二维矩阵)***
print(x)

x[np.newaxis, :] # np.newaxis与None用法一致
print(x)

结果:

8.np.prod() 计算元素乘积

默认计算矩阵所有元素的乘积,也可以通过axis计算指定轴的乘积

代码示例:

import numpy as np
x = np.array([[1,2,3],[2,3,4]])
np.prod(x)
print(x)

np.prod(x,axis=1)
print(x)

np.prod(x,axis=0)
print(x)

结果:

9. 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值