0


numpy的简单使用(二)

首先,导入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)

标签: python

本文转载自: https://blog.csdn.net/weixin_62684026/article/details/124305927
版权归原作者 wolfwalker 所有, 如有侵权,请联系我们删除。

“numpy的简单使用(二)”的评论:

还没有评论