numpy 数组索引及切片
一维数组的索引以及切片
在numpy 中一维数组的切片和python中的列表一样。切片左闭右开。
In [18]: a
Out[18]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [19]: a[2]
Out[19]: 2
In [20]: a[:3]
Out[20]: array([0, 1, 2])
多维数据的索引及切片
多维一般指二维数组,切片的方式有两个写法:
In [22]: a = np.arange(15).reshape(3,5)
In [23]: a
Out[23]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
In [24]: a[1,1]
Out[24]: 6
In [25]: a[1][1]
Out[25]: 6
三维就把二维的进化一下就好了:
按照先维度后行后列。
In [29]: a
Out[29]:
array([[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]],
[[ 8, 9],
[10, 11]]])
In [30]: a[1,1,1]
Out[30]: 7
布尔型的索引及切片
In [34]: a = np.arange(12).reshape(3,4)
In [35]: a
Out[35]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [36]: a > 5
Out[36]:
array([[False, False, False, False],
[False, False, True, True],
[ True, True, True, True]])
通常情况下,我们是用来筛选的:
In [37]: a[a>5]
Out[37]: array([ 6, 7, 8, 9, 10, 11])
这样就可以了。
numpy随机数
以正态分布和均匀分布生成的随机数。
均匀分布生成的随机数:
# 以均匀分布的方式生成随机数
# numpy.random.rand() 生成一个0-1之间的随机浮点数或N维浮点数
In [1]: import numpy as np
In [2]: np.random.rand()
Out[2]: 0.7056668317530578
In [3]: np.random.rand(3,3)
Out[3]:
array([[0.85244573, 0.43591207, 0.98709316],
[0.16660604, 0.84830518, 0.14701655],
[0.06542728, 0.4029084 , 0.69642433]])
In [4]: np.random.rand(2,2,2)
Out[4]:
array([[[0.19348656, 0.61931929],
[0.40640615, 0.89262989]],
[[0.82513219, 0.16872264],
[0.20941504, 0.47643563]]])
正态分布生成的随机数:
In [5]: np.random.randn()
Out[5]: 0.06686851978010712
In [6]: np.random.randn(3,3)
Out[6]:
array([[-1.66678949, -1.81216186, -0.12748947],
[ 0.91738847, -0.7739602 , 0.27155456],
[ 0.34947274, 0.0610055 , 1.16152738]])
In [7]: np.random.randn(2,2,2)
Out[7]:
array([[[-0.96374594, 0.00700868],
[ 0.18058655, -1.42383515]],
[[-0.88401762, -0.00433659],
[ 1.54101661, 1.51848019]]])
这样看起来太不直观了,画个图吧
import matplotlib.pyplot as plt
b = np.random.rand(500)
a = np.random.rand(500)
c = np.random.rand(500)
d = np.random.rand(500)
plt.scatter(a,b)
plt.scatter(c,d)
plt.show()
这是随机分布的图:
随机分布图
这是正态分布的图:
正态分布
numpy 随机数的其他用法
在1-10之间随机生成整数
In [36]: np.random.randint(1,10)
Out[36]: 5
# 生成指定数量的随机数
In [37]: np.random.randint(1,10,size=5)
Out[37]: array([5, 4, 7, 2, 2])
# 二维
In [38]: np.random.randint(1,10,size=(2,5))
Out[38]:
array([[2, 7, 2, 9, 1],
[4, 8, 6, 3, 1]])
网友评论