Numpy_100题(1)

Numpy 100 题(01)

import numpy as np
  • 2、显示numpy版本信息和配置信息
print(np.__version__)
print(np.show_config)
1.15.4
<function show at 0x0000020E6D935048>
  • 3、创建一个长度为10的向量
np.zeros(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
  • 4、查看数组的所占内存大小
Z = np.zeros((10,10))
print(Z.size)
print(Z.itemsize)
print("占用内存 %d 字节"%(Z.size * Z.itemsize))
100
8
占用内存 800 字节
  • 5、获取numpy中的add()函数的文档说明
# np.info(np.add) 显示内容过多,因此注释掉了
  • 6、创建一个长度为10的数组,除了第5个元素为1,其余为0
Z = np.zeros(10)
Z[4] = 1
Z
array([0., 0., 0., 0., 1., 0., 0., 0., 0., 0.])
  • 7、创建一个数组,元素内容为10-49之间的整数
np.arange(10,50)
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
       27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
       44, 45, 46, 47, 48, 49])
  • 8、反转数组
Z = np.arange(10)
print(Z)
Z = Z[::-1]
print(Z)
[0 1 2 3 4 5 6 7 8 9]
[9 8 7 6 5 4 3 2 1 0]
  • 9、创建一个元素为0-8的3*3的矩阵
np.arange(9).reshape((3,3))
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
  • 10、从一个已知数组中找到非零元素的索引
Z = np.nonzero([1,2,0,0,4,0])
Z
(array([0, 1, 4], dtype=int64),)
  • 10.1、从一个数组中找出非零元素
Z = np.array([1,2,0,0,4,0])
Z[Z!=0]
array([1, 2, 4])
  • 11、创建一个3*3的单位矩阵
np.eye(3,3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
  • 12、创建一个333的随机矩阵
np.random.random((3,3,3))
array([[[0.37012557, 0.58629246, 0.63469257],
        [0.07624521, 0.7364043 , 0.49991276],
        [0.22619947, 0.79636025, 0.13946926]],

       [[0.01292098, 0.05088407, 0.6725912 ],
        [0.22836428, 0.26632302, 0.28000895],
        [0.07163848, 0.97799436, 0.42490585]],

       [[0.50347816, 0.2865657 , 0.68199042],
        [0.4922003 , 0.13419313, 0.4132367 ],
        [0.9027708 , 0.47907502, 0.80020785]]])
  • 13、创建一个10*10的随机矩阵,并查找其中的最大值和最小值
Z = np.random.random((10,10))
print(Z.min(), Z.max())
0.011754766652203097 0.9907146373493055
  • 14、创建一个长度为30的数组并求其均值
Z = np.random.random(30)
Z.mean()
0.4629062578787529
  • 15、创建一个10*10数组,外面为1,内层为0
Z = np.ones((5,5))
Z[1:-1,1:-1] = 0
Z
array([[1., 1., 1., 1., 1.],
       [1., 0., 0., 0., 1.],
       [1., 0., 0., 0., 1.],
       [1., 0., 0., 0., 1.],
       [1., 1., 1., 1., 1.]])
  • 16、如何给已知的数组使用某个数(比如0)填充边界?
Z = np.ones((5,5))
np.pad(Z, pad_width=1,mode='constant',constant_values=0)
array([[0., 0., 0., 0., 0., 0., 0.],
       [0., 1., 1., 1., 1., 1., 0.],
       [0., 1., 1., 1., 1., 1., 0.],
       [0., 1., 1., 1., 1., 1., 0.],
       [0., 1., 1., 1., 1., 1., 0.],
       [0., 1., 1., 1., 1., 1., 0.],
       [0., 0., 0., 0., 0., 0., 0.]])
  • 17、下面的结果是什么?
print(0*np.nan)
print(np.nan == np.nan)
print(np.inf > np.nan)
print(np.nan - np.nan)
print(np.nan in set([np.nan]))
print(0.3 == 3*0.1)
nan
False
False
nan
True
False
3*0.1
0.30000000000000004
  • 18、使用1,2,3,4创建一个5*5的下三角矩阵
np.diag(np.arange(1,5),k=-1)# k=1对角线上方为1-4,k=0对角线为1-4
array([[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]])
  • 19、创建一个8*8的棋盘模式的矩阵
Z = np.zeros((8,8),dtype=int)
Z[1::2,::2] = 1
Z[::2,1::2] = 1
Z
array([[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]])
  • 20、对于一个6 * 7 * 8的数组,第100个元素的索引是多少?
print(np.unravel_index(100,(6,7,8)))
(1, 5, 4)
  • 21、使用tile函数创建棋盘格8x8矩阵
np.tile(np.array([[0,1],[1,0]]),(4,4))
array([[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]])
  • 22、归一化一个5 * 5的随机矩阵
np.random.normal(np.random.random((5,5)))
array([[ 2.60849853,  0.31874995,  0.64675949, -0.73555684,  0.8113693 ],
       [-0.39506835, -1.1498409 ,  0.02358563,  0.39965941, -0.64782367],
       [ 2.19659838,  0.75566756, -0.02041239, -0.69997971, -0.74525086],
       [ 0.6928399 , -0.85761756,  1.73544746,  0.86835734,  0.72045554],
       [ 1.41462803,  0.40143413,  1.59049199,  1.64649693,  0.94731539]])
Z = np.random.random((5,5))
Z = (Z - Z.mean())/(np.std(Z))
Z
array([[ 1.74587543, -0.46466548, -0.23803106, -0.64728251,  1.07947335],
       [-0.65515525,  0.47001418, -0.67270887,  0.40757181,  0.0523071 ],
       [ 1.75866604, -1.23064294,  1.71929603, -1.67534284, -0.14622862],
       [ 1.73525806,  0.09939137, -1.67251594, -1.23570368,  0.38072644],
       [-0.51723689,  0.26364351, -0.64551786,  0.34784446, -0.25903583]])
  • 23、创建一个自定义dtype,将颜色描述为四个无符号字节(RGBA)
color = np.dtype([('r',np.ubyte,1), ('g',np.ubyte,1), ('b',np.ubyte,1), ('a',np.ubyte,1),])
color
dtype([('r', 'u1'), ('g', 'u1'), ('b', 'u1'), ('a', 'u1')])
  • 24、矩阵相乘
np.dot(np.ones((4,3)), np.ones((3,2)))
array([[3., 3.],
       [3., 3.],
       [3., 3.],
       [3., 3.]])
  • 25、给定一个数组,原地否定所有3-8之间的元素
Z = np.arange(11)
Z[(Z>3)&(Z<8)] *= -1
Z
array([ 0,  1,  2,  3, -4, -5, -6, -7,  8,  9, 10])
print(sum(range(5),-1))
9
from numpy import *
print(sum(range(5),-1))
10
  • 27、对于一个整数数组,下面哪个是合法的?
Z = np.arange(5)
Z**Z
array([  1,   1,   4,  27, 256], dtype=int32)
2<<Z>>2
array([0, 1, 2, 4, 8], dtype=int32)
Z<-Z
array([False, False, False, False, False])
1j*Z
array([0.+0.j, 0.+1.j, 0.+2.j, 0.+3.j, 0.+4.j])
Z/1/1
array([0., 1., 2., 3., 4.])
Z<Z>Z
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-112-6d2bd9eb1fd1> in <module>
----> 1 Z<Z>Z


ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Z>>2
array([0, 0, 0, 0, 1], dtype=int32)
Z<<2
array([ 0,  4,  8, 12, 16], dtype=int32)
  • 28、下面得结果是什么?
print(np.array(0)/np.array(0))
print(np.array(0)//np.array(0))
print(np.array([np.nan]).astype(int).astype(float))
nan
0
[-2.14748365e+09]


D:\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: RuntimeWarning: invalid value encountered in true_divide
  """Entry point for launching an IPython kernel.
D:\Anaconda3\lib\site-packages\ipykernel_launcher.py:2: RuntimeWarning: divide by zero encountered in floor_divide
  • 29、How to round away from zero a float array?
Z = np.random.uniform(-10,+10,10)
print (np.copysign(np.ceil(np.abs(Z)), Z))
[-3.  4. -2. -7. -6.  2. -4. -7. 10.  1.]
print (Z)
print(np.ceil(Z))
[-2.20110087  3.00916651 -1.69460284 -6.60836919 -5.81308119  1.31549905
 -3.75580551 -6.00466297  9.57310303  0.30092061]
[-2.  4. -1. -6. -5.  2. -3. -6. 10.  1.]
  • 30、找出两个数组中的相同值
Z1 = np.random.randint(0,10,10)
Z2 = np.random.randint(0,10,10)
print(np.intersect1d(Z1,Z2))
[0 6 9]
Z1
array([1, 5, 2, 6, 9, 2, 5, 0, 1, 3])
Z2
array([7, 4, 6, 0, 7, 7, 7, 9, 6, 8])
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值