numpy的简单使用

Posted wolfwalker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy的简单使用相关的知识,希望对你有一定的参考价值。

目录

4.生成随机数

 5.索引与切片

布尔索引

 6.数组运算

 数组之间的大小比较

 7.数组的组合

一、使用函数concatenate

 二、使用函数hstack()和vstack()

 8.数组的分隔

使用hsplit/csplit函数将数组分隔

使用split函数将数组切割 


首先,导入numpy包

import numpy as np

4.生成随机数

生成20个数值范围在0到1之间的数据

arr1=np.random.random(20)
print(arr1)

numpy.random模块可以高效地生成多种概率分布下完整样本值数组:

normal()

从正太(高斯)分布中抽取样本
randn()从均值0方差1的正态分布中抽取样本
random()从0-1之间抽取随机数
seed()

向随机数生成器传递随机状态种子,当随机状态种子相同时,随机数相同

rand()生成数值范围在0到1之间的数据

arr1=np.random.rand(100)
print(arr1)

此时我们可以查看到具体的数值 

 接下来转成更加直观的直方图,通过下面的图,我们可以看出,出现在0到1之间的数据出现的概率是随机且大致相等的。

import matplotlib.pyplot as plt
arr1=np.random.rand(10000)
fig=plt.figure()
plt.hist(arr1,bins=50)
plt.show()

 查看正态分布

import matplotlib.pyplot as plt
arr2=np.random.randn(10000)
fig=plt.figure()
plt.hist(arr2,bins=50)
plt.show()

 5.索引与切片

一维数组的切片、索引与Python原生的切片类似

arr1=np.arange(10)
print(arr1)
print(arr1[5])
print(arr1[3:5])

 对数组切片的影响都会反映到数组本身

arr1=np.arange(10)
print(arr1)
arr1[3:7]=[1,2,1,2]
print(arr1)

如果需要数组切片的副本,我们需要使用copy的方法,就不会对原数组产生影响。

arr1=np.arange(10)
print(arr1)
arr2=arr1[3:5].copy()
print(arr1)
print(arr2)
arr2[0:2]=[5,6]
print(arr1)
print(arr2)

 

布尔索引

这里我们生成一个[1,0,0,0,1]的布尔值类型的数组arr1,然后生成一个[0,1,2,3,4]的arr2数组,当我们arr2[arr1]后,arr1中1的位置将会被打印出来。

import numpy as np
arr1=np.array([1,0,0,0,1],dtype=bool)
arr2=np.arange(5)
print(arr2[arr1])

 6.数组运算

首先我们创建一个二维数组,然后进行测试,我们可以发现数组的加减乘除等运算会对数组中的每一个元素生效。

arr2=np.array([[1,2,3,4],[5,6,7,8]])
print(arr2)
print(arr2*2)
print(arr2+5)
print(arr2/5)
print(arr2**3)

 数组之间的大小比较

看下列的代码,会打印出来一个布尔类型的数组,其中arr2大于arr3的位置为true其余位置全部都是false。

arr2=np.array([[1,2,3,4],[5,6,7,8]])
arr3=np.array([[9,8,7,6],[214,4,14,4]])
print(arr2>arr3)

 7.数组的组合

有的时候,我们需要将两个数组拼接起来,这里我们提供以下两种方法。

一、使用函数concatenate

axis=1时,将arr2和arr3两个数组横向拼接

arr2=np.array([[1,2,3,4],[5,6,7,8]])
arr3=np.array([[9,8,7,6],[214,4,14,4]])
arr4=np.concatenate((arr2,arr3),axis=1)
print(arr4)

 axis=0时,将arr2和arr3两个函数纵向拼接

arr2=np.array([[1,2,3,4],[5,6,7,8]])
arr3=np.array([[9,8,7,6],[214,4,14,4]])
arr4=np.concatenate((arr2,arr3),axis=0)
print(arr4)

 二、使用函数hstack()和vstack()

hstack为横向拼接,vstack为纵向拼接

arr2=np.array([[1,2,3,4],[5,6,7,8]])
arr3=np.array([[9,8,7,6],[214,4,14,4]])
arr4=np.hstack((arr2,arr3))
print(arr4)
arr5=np.stack((arr2,arr3))
print(arr5)

 8.数组的分隔

使用hsplit/csplit函数将数组分隔

将数组等分成左右两个数组。

arr2=np.array([[1,2,3,4],[5,6,7,8]])
arr3,arr4=np.hsplit(arr2,2)
print(arr3)
print()
print(arr4)

 将数组等分成上下两个数组

arr2=np.array([[1,2,3,4],[5,6,7,8]])
arr3,arr4=np.vsplit(arr2,2)
print(arr3)
print()
print(arr4)

使用split函数将数组切割 

上下等分成两个数组

arr2=np.array([[1,2,3,4],[5,6,7,8]])
arr3,arr4=np.split(arr2,2,axis=0)
print(arr3)
print()
print(arr4)

 左右等分成两个数组

arr2=np.array([[1,2,3,4],[5,6,7,8]])
arr3,arr4=np.split(arr2,2,axis=1)
print(arr3)
print()
print(arr4)

 左右不均匀切割

arr2=np.array([[1,2,3,4,6,7,8,9,0,0],[5,6,7,8,32,1,31,4,41,3]])
arr3,arr4=np.split(arr2,(2,),axis=1)
print(arr3)
print()
print(arr4)

以上是关于numpy的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

WPS 文字纵向,阿拉伯数字横向 的小技巧

每次执行代码时,Numpy 2-D 数组都会更改值

Numpy的学习5-array的分割

iOS Mobile Safari 纵向布局过于缩放

numpy C API 中的 import_array 如何工作?

所有字符串表都会导致 PickleException:ClassDict 构造的预期零参数(用于 numpy.dtype)