numpy常用知识速查
Posted Rainbowman 0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy常用知识速查相关的知识,希望对你有一定的参考价值。
目录
- 1. numpy数据类型
- 2. numpy创建空数组
- 3. numpy.arrange()和numpy.linspace()
- 4. numpy的布尔索引
- 5. 遍历多维数组的每一个元素(ndarray.flat)
- 6. 扩展数组的维度numpy.expand_dims(array, axis)
- 7. 删除数组中的一维的轴np.squeeze()
- 8. 链接相同形状的数组np.concatenate()
- 9. 堆叠相同形状的数组np.stack()
- 10. 在数组末尾添加值np.append()
- 11. 删除某一行或某一列np.delete()
- 12. 去除重复值np.unique(arr)
- 13. numpy取整函数
- 14. 求最大/最小值
- 15. 把多维数组展开到一维x.flatten()
- 16. 排序函数
- 17. 提取符合条件的元素np.where()
- 18. 随机数函数
- 19. 更多关于numpy的详细讲解(相对目前不常用)
1. numpy数据类型
2. numpy创建空数组
# 值为随机
x = np.empty((3,5), dtype=np.int8)
x
# 结果
array([[ 16, 71, 73, -119, 51],
[ 2, 0, 0, 112, -78],
[ 54, -122, 51, 2, 0]], dtype=int8)
创建全0和全1的数组为
x = np.zeros((3,5), dtype=np.int8)
x = np.ones((3,5), dtype=np.int8)
3. numpy.arrange()和numpy.linspace()
numpy.arange(start, stop, step, dtype)
x = np.arange(0,10,2,dtype=np.float)
print(x)
# 结果
[0. 2. 4. 6. 8.]
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
x = np.linspace(10,20,20,dtype=np.float)
print(x)
# 结果
[10. 10.52631579 11.05263158 11.57894737 12.10526316 12.63157895
13.15789474 13.68421053 14.21052632 14.73684211 15.26315789 15.78947368
16.31578947 16.84210526 17.36842105 17.89473684 18.42105263 18.94736842
19.47368421 20. ]
np.arange()是设置间距,而np.linspace()是设置数量。
4. numpy的布尔索引
x = np.arange(20)
y = np.arange(40)
x = x.reshape(2,10)
y = y.reshape(2,10,2)
print('x为:\\n', x)
print('y为:\\n', y)
print('过滤后的x:\\n', x[x>5])
print('过滤后的y:\\n', y[y>5])
# 结果
x为:
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]]
y为:
[[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]
[ 8 9]
[10 11]
[12 13]
[14 15]
[16 17]
[18 19]]
[[20 21]
[22 23]
[24 25]
[26 27]
[28 29]
[30 31]
[32 33]
[34 35]
[36 37]
[38 39]]]
过滤后的x:
[ 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
过滤后的y:
[ 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39]
5. 遍历多维数组的每一个元素(ndarray.flat)
x = np.arange(100).reshape(10,10)
for i in x.flat:
print(i, end=' ')
# 结果
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
6. 扩展数组的维度numpy.expand_dims(array, axis)
x = np.arange(20).reshape(5,4)
print('x的形状为:', x.shape,'\\n')
y = np.expand_dims(x, axis=0)
print('y的形状为:', y.shape,'\\n')
# 结果
x的形状为: (5, 4)
y的形状为: (1, 5, 4)
在将图片数据输入神经网络时,有时需要将(Channel,Height,Width)类型的图片数据转换成(Number,Channel,Height,Width),这时就可以用np.expand_dims()函数了。
7. 删除数组中的一维的轴np.squeeze()
x = np.arange(20).reshape(1,5,1,4,1)
print('x的形状为:', x.shape,'\\n')
x = np.squeeze(x)
print('x的形状为:', x.shape,'\\n')
# 结果
x的形状为: (1, 5, 1, 4, 1)
x的形状为: (5, 4)
8. 链接相同形状的数组np.concatenate()
x = np.arange(20).reshape(1, 5, 4)
y = np.arange(20,40).reshape(1, 5, 4)
print('x的形状为:', x.shape,'\\n')
print('y的形状为:', y.shape,'\\n')
a = np.concatenate((x,y), axis=0)
print('a的形状为:', a.shape,'\\n')
print(a)
# 结果
x的形状为: (1, 5, 4)
y的形状为: (1, 5, 4)
a的形状为: (2, 5, 4)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
[[20 21 22 23]
[24 25 26 27]
[28 29 30 31]
[32 33 34 35]
[36 37 38 39]]]
9. 堆叠相同形状的数组np.stack()
用法和np.concatenate()类似,但:
np.concatenate()不会增加数组的轴数量,只是在原来的数组后面塞入新的数组;
而np.stack()会在axis=0处新加一个轴:
x = np.arange(20).reshape(5, 4)
y = np.arange(20,40).reshape(5, 4)
print('x的形状为:', x.shape,'\\n')
print('y的形状为:', y.shape,'\\n')
a = np.stack((x,y), axis=0)
print('a的形状为:', a.shape,'\\n')
print(a)
# 结果
x的形状为: (5, 4)
y的形状为: (5, 4)
a的形状为: (2, 5, 4)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
[[20 21 22 23]
[24 25 26 27]
[28 29 30 31]
[32 33 34 35]
[36 37 38 39]]]
10. 在数组末尾添加值np.append()
说明:只有在x.shape = (n, a, b),y.shape=(m, a, b)时,才可以用np.append(),且必须指定axis=0,否则会变成一维数组
x = np.arange(20).reshape(5, 4)
y = np.arange(20,40).reshape(5, 4)
x = np.expand_dims(x, axis=0)
y = np.expand_dims(y, axis=0)
print('x的形状为:', x.shape,'\\n')
print('y的形状为:', y.shape,'\\n')
a = np.append(x, y, axis = 0)
print('a的形状为:', a.shape,'\\n')
b = np.append(a, x, axis=0)
print('b的形状为:', b.shape,'\\n')
print(b)
# 结果
x的形状为: (1, 5, 4)
y的形状为: (1, 5, 4)
a的形状为: (2, 5, 4)
b的形状为: (3, 5, 4)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
[[20 21 22 23]
[24 25 26 27]
[28 29 30 31]
[32 33 34 35]
[36 37 38 39]]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]]
11. 删除某一行或某一列np.delete()
x = np.arange(20).reshape(5, 4)
print('x是:\\n', x)
y = np.delete(x, 1, axis=0) # 删除第一行
z = np.delete(x, 1, axis=1) # 删除第一列
print('删除第一行:\\n', y)
print('删除第一列:\\n', z)
a = np.delete(x, [0,1], axis=0) # 删除第0和1行
print('删除第0行和第1行:\\n', a)
# 结果
x是:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
删除第一行:
[[ 0 1 2 3]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
删除第一列:
[[ 0 2 3]
[ 4 6 7]
[ 8 10 11]
[12 14 15]
[16 18 19]]
删除第0行和第1行:
[[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]]
12. 去除重复值np.unique(arr)
如果arr不是一维数组,则会被展开
x = np.array([[1,2,3],[4,5,6],[1,2,9]])
print('x是:\\n', x)
y = np.unique(x)
print('去重后:\\n', y)
# 结果
x是:
[[1 2 3]
[4 5 6]
[1 2 9]]
去重后:
[1 2 3 4 5 6 9]
13. numpy取整函数
np.around():四舍五入
np.floor():向下取整
np.ceil():向上取整
14. 求最大/最小值
14.1 返回元素:np.amax()/np.amin()
# np.amin():求最小值
# np.amax():求最大值
x = np.array([[1,2,3],[4,5,6],[7,8,9]])
print('x\\n', x)
print('amin()\\n',np.amin(x, axis=1)) # 求每一行的最小值
print('amin()\\n',np.amin(x, axis=0)) # 求每一列的最小值
print('amin()\\n',np.amin(x)) # 求所有元素的最小值
# np.amax()用法同理
# 结果
x
[[1 2 3]
[4 5 6]
[7 8 9]]
amin()
[1 4 7]
amin()
[1 2 3]
amin()
1
14.2 返回索引:np.argmin()/np.argmax()
# np.amin():求最小值
# np.amax():求最大值
x = np.random.randint(1,100, size=(3,3))
print('x\\n', x)
print('argmin()【axis=1】\\n',np以上是关于numpy常用知识速查的主要内容,如果未能解决你的问题,请参考以下文章