前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >numpyPractice100_one

numpyPractice100_one

作者头像
皮大大
发布2021-03-02 14:33:36
3780
发布2021-03-02 14:33:36
举报

这个100题系列来源于github上的题目,分为4天完成,主要介绍的是numpy的常见操作。

代码语言:javascript
复制
# 导入numpy包
import numpy as np
代码语言:javascript
复制
# 查看版本
print(np.__version__)
代码语言:javascript
复制
1.16.3
代码语言:javascript
复制
# 创造全0矩阵
Z = np.zeros((5,5))
Z
代码语言:javascript
复制
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])
代码语言:javascript
复制
# 查看数组内存大小
Z = np.zeros((5,5))
print("%d bytes" % (Z.size * Z.itemsize))
代码语言:javascript
复制
200 bytes
代码语言:javascript
复制
Z.itemsize
代码语言:javascript
复制
8
代码语言:javascript
复制
# 修改数组指定位置的值
Z = np.zeros(10)
Z[4] = 5
Z
代码语言:javascript
复制
array([0., 0., 0., 0., 5., 0., 0., 0., 0., 0.])
代码语言:javascript
复制
# 如何反转数组
Z = np.arange(10,21)
Z = Z[::-1]   # 实现反转功能
Z
代码语言:javascript
复制
array([20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10])
代码语言:javascript
复制
# 改变数组形状
Z = np.arange(9).reshape(3,3)
Z
代码语言:javascript
复制
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
代码语言:javascript
复制
# 创建非0数组:自动将数组中的0去掉
nz = np.nonzero([1,2,0,0,4,0])
nz
代码语言:javascript
复制
(array([0, 1, 4], dtype=int64),)
代码语言:javascript
复制
# 创建单位矩阵
Z = np.eye(3)   
Z
代码语言:javascript
复制
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
代码语言:javascript
复制
# 找出数组中的最大和最小值
Z = np.random.random((10,10))  # random生成的是0-1之间的数
Zmin, Zmax = Z.min(), Z.max()   # 找出最小和最大值
print(Zmin, Zmax)
代码语言:javascript
复制
0.00804609668099976 0.9958444566621576
代码语言:javascript
复制
 # 求平均值
z = np.random.random(30)
m = z.mean() 
m
代码语言:javascript
复制
0.5543031427314672
代码语言:javascript
复制
# 行中的索引为1到索引为-2(含头不含尾),列同样,赋值为0
z = np.ones((10,10))
z[1:-1, 1:-1] = 0    #  行和列的指定位置同时赋值为0
z
代码语言:javascript
复制
array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
代码语言:javascript
复制
# 数组外围的填充
Z = np.ones((5,5))  # 全1矩阵
# 将5*5变成7*7的矩阵,外围填充的数字是0,模式是常量
Z = np.pad(Z, pad_width=2, mode='constant', constant_values=0) 
Z
代码语言:javascript
复制
array([[0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 1., 1., 1., 1., 1., 0., 0.],
       [0., 0., 1., 1., 1., 1., 1., 0., 0.],
       [0., 0., 1., 1., 1., 1., 1., 0., 0.],
       [0., 0., 1., 1., 1., 1., 1., 0., 0.],
       [0., 0., 1., 1., 1., 1., 1., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0.]])
代码语言:javascript
复制
# nan的神器之处
print(0 * np.nan)   # nan
print(np.nan == np.nan)  # F
print(np.inf > np.nan)   # F
print(np.nan - np.nan)   # nan 
print(np.nan in set([np.nan])) # T
print(0.3 == 3 * 0.1)  # F
代码语言:javascript
复制
nan
False
False
nan
True
False
代码语言:javascript
复制
Z = np.diag(1+np.arange(4),k=1)
print(Z)
代码语言:javascript
复制
[[0 1 0 0 0]
 [0 0 2 0 0]
 [0 0 0 3 0]
 [0 0 0 0 4]
 [0 0 0 0 0]]
代码语言:javascript
复制
Z = np.diag(1+np.arange(4),k=-1)  # 观察k值的变化
print(Z)
代码语言:javascript
复制
[[0 0 0 0 0]
 [1 0 0 0 0]
 [0 2 0 0 0]
 [0 0 3 0 0]
 [0 0 0 4 0]]
代码语言:javascript
复制
Z = np.diag(1+np.arange(4),k=-2)
print(Z)
代码语言:javascript
复制
[[0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [1 0 0 0 0 0]
 [0 2 0 0 0 0]
 [0 0 3 0 0 0]
 [0 0 0 4 0 0]]
代码语言:javascript
复制
Z = np.zeros((8,8),dtype=int)
Z[1::2,::2] = 1
Z[::2,1::2] = 1
print(Z)
代码语言:javascript
复制
[[0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]]
代码语言:javascript
复制
print(np.unravel_index(99,(6,7,8)))
代码语言:javascript
复制
(1, 5, 3)
代码语言:javascript
复制
Z = np.tile( np.array([[0,1],[1,0]]), (4,4))
print(Z)
代码语言:javascript
复制
[[0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]]
代码语言:javascript
复制
Z = np.random.random((5,5))
Z = (Z - np.mean (Z)) / (np.std (Z))  # 标准分布
print(Z)
代码语言:javascript
复制
[[ 1.41352327 -1.10568196  0.42998927 -1.13603058  1.6252364 ]
 [-1.38790781 -0.38326045 -0.48561531 -0.91306084  0.99511305]
 [-0.95801467  0.72817058  0.42855968  0.40835484  1.69929003]
 [ 0.36861659  0.05906306 -1.31997441 -0.92392559  1.00674601]
 [ 0.69583865 -0.71638163 -1.14414993 -0.83217088  1.44767262]]
代码语言:javascript
复制
# 数组的点乘
Z = np.dot(np.ones((5,3)), np.ones((3,2)))  # dot表示点乘
print(Z)

print("-----------")

# Alternative solution, in Python 3.5 and above
Z = np.ones((5,3)) @ np.ones((3,2))
print(Z)
代码语言:javascript
复制
[[3. 3.]
 [3. 3.]
 [3. 3.]
 [3. 3.]
 [3. 3.]]
-----------
[[3. 3.]
 [3. 3.]
 [3. 3.]
 [3. 3.]
 [3. 3.]]
代码语言:javascript
复制
# 条件表达式的使用
Z = np.arange(11)
Z[(3 < Z) & (Z <= 8)] *= -1
print(Z)
代码语言:javascript
复制
[ 0  1  2  3 -4 -5 -6 -7 -8  9 10]
代码语言:javascript
复制
Z = np.arange(11)
Z[(3 < Z)] = 10   # 将大于3的赋值为10
print(Z)
代码语言:javascript
复制
[ 0  1  2  3 10 10 10 10 10 10 10]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-9-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档