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)

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桜キャンドル淵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值