Python之Numpy模块100道测试题.docx

上传人:b****7 文档编号:11467814 上传时间:2023-03-01 格式:DOCX 页数:28 大小:27.05KB
下载 相关 举报
Python之Numpy模块100道测试题.docx_第1页
第1页 / 共28页
Python之Numpy模块100道测试题.docx_第2页
第2页 / 共28页
Python之Numpy模块100道测试题.docx_第3页
第3页 / 共28页
Python之Numpy模块100道测试题.docx_第4页
第4页 / 共28页
Python之Numpy模块100道测试题.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

Python之Numpy模块100道测试题.docx

《Python之Numpy模块100道测试题.docx》由会员分享,可在线阅读,更多相关《Python之Numpy模块100道测试题.docx(28页珍藏版)》请在冰豆网上搜索。

Python之Numpy模块100道测试题.docx

Python之Numpy模块100道测试题

1.导入numpy库并简写为np(★☆☆)

(提示:

import…as…)

import numpy as np

2.打印numpy的版本和配置说明(★☆☆)

(提示:

np.version,np.show_config)

print(np.__version__)

np.show_config()

3.创建一个长度为10的空向量(★☆☆)

(提示:

np.zeros)

Z = np.zeros(10)

print(Z)

4.如何找到任何一个数组的内存大小?

(★☆☆)

(提示:

size,itemsize)

Z = np.zeros((10,10))

print("%d bytes" % (Z.size * Z.itemsize))

5.如何从命令行得到numpy中add函数的说明文档?

(★☆☆)

(提示:

np.info)

numpy.info(numpy.add)

add(x1,x2,/,out=None,*,where=True,casting='same_kind',order='K',dtype=None,subok=True[,signature,extobj])

6.创建一个长度为10并且除了第五个值为1的空向量(★☆☆)

(提示:

array[4])

Z = np.zeros(10)

Z[4] = 1

print(Z)

7.创建一个值域范围从10到49的向量(★☆☆)

(提示:

np.arange)

Z = np.arange(10,50)

print(Z)

8.反转一个向量(第一个元素变为最后一个)(★☆☆)

(提示:

array[:

:

-1])

Z = np.arange(50)

Z = Z[:

:

-1]

print(Z)

9.创建一个3x3并且值从0到8的矩阵(★☆☆)

(提示:

reshape)

Z = np.arange(9).reshape(3,3)

print(Z)

10.找到数组[1,2,0,0,4,0]中非0元素的位置索引(★☆☆)

(提示:

np.nonzero)

nz = np.nonzero([1,2,0,0,4,0])

print(nz)

11.创建一个3x3的单位矩阵(★☆☆)

(提示:

np.eye)

Z = np.eye(3)

print(Z)

12.创建一个3x3x3的随机数组(★☆☆)

(提示:

np.random.random)

Z = np.random.random((3,3,3))

print(Z)

13.创建一个10x10的随机数组并找到它的最大值和最小值(★☆☆)

(提示:

min,max)

Z = np.random.random((10,10))

Zmin, Zmax = Z.min(), Z.max()

print(Zmin, Zmax)

14.创建一个长度为30的随机向量并找到它的平均值(★☆☆)

(提示:

mean)

Z = np.random.random(30)

m = Z.mean()

print(m)

15.创建一个二维数组,其中边界值为1,其余值为0(★☆☆)

(提示:

array[1:

-1,1:

-1])

Z = np.ones((10,10))

Z[1:

-1,1:

-1] = 0

print(Z)

16.对于一个存在在数组,如何添加一个用0填充的边界?

(★☆☆)

(提示:

np.pad)

Z = np.ones((5,5))

Z = np.pad(Z, pad_width=1, mode='constant', constant_values=0)

print(Z)

17.以下表达式运行的结果分别是什么?

(★☆☆)

(提示:

NaN=notanumber,inf=infinity)

0*np.nan

np.nan==np.nan

np.inf>np.nan

np.nan-np.nan

0.3==3*0.1

print(0 * np.nan)

print(np.nan == np.nan)

print(np.inf > np.nan)

print(np.nan - np.nan)

print(0.3 == 3 * 0.1)

18.创建一个5x5的矩阵,并设置值1,2,3,4落在其对角线下方位置(★☆☆)

(提示:

np.diag)

Z = np.diag(1+np.arange(4),k=-1)

print(Z)

19.创建一个8x8的矩阵,并且设置成棋盘样式(★☆☆)

(提示:

array[:

:

2])

Z = np.zeros((8,8),dtype=int)

Z[1:

:

2,:

:

2] = 1

Z[:

:

2,1:

:

2] = 1

print(Z)

20.考虑一个(6,7,8)形状的数组,其第100个元素的索引(x,y,z)是什么?

(提示:

np.unravel_index)

print(np.unravel_index(100,(6,7,8)))

21.用tile函数去创建一个8x8的棋盘样式矩阵(★☆☆)

(提示:

np.tile)

Z = np.tile( np.array([[0,1],[1,0]]), (4,4))

print(Z)

22.对一个5x5的随机矩阵做归一化(★☆☆)

(提示:

(x-min)/(max-min))

Z = np.random.random((5,5))

Zmax, Zmin = Z.max(), Z.min()

Z = (Z - Zmin)/(Zmax - Zmin)

print(Z)

23.创建一个将颜色描述为(RGBA)四个无符号字节的自定义dtype?

(★☆☆)

(提示:

np.dtype)

color = np.dtype([("r", np.ubyte, 1),

                  ("g", np.ubyte, 1),

                  ("b", np.ubyte, 1),

                  ("a", np.ubyte, 1)])

color

24.一个5x3的矩阵与一个3x2的矩阵相乘,实矩阵乘积是什么?

(★☆☆)

(提示:

np.dot|@)

Z = np.dot(np.ones((5,3)), np.ones((3,2)))

print(Z)

25.给定一个一维数组,对其在3到8之间的所有元素取反(★☆☆)

(提示:

>,<=)

Z = np.arange(11)

Z[(3 < Z) & (Z <= 8)] *= -1

print(Z)

26.下面脚本运行后的结果是什么?

(★☆☆)

(提示:

np.sum)

print(sum(range(5),-1))

fromnumpyimport*

print(sum(range(5),-1))

print(sum(range(5),-1))

from numpy import *

print(sum(range(5),-1))

27.考虑一个整数向量Z,下列表达合法的是哪个?

(★☆☆)

Z**Z

2<>2

Z<-Z1j*ZZ/1/1ZZ

Z = np.arange(5)

Z ** Z  # legal

array([ 1, 1, 4, 27,256])

Z = np.arange(5)

2 << Z >> 2  # false

array([0,1,2,4,8])

Z = np.arange(5)

Z <- Z   # legal

array([False,False,False,False,False])

Z = np.arange(5)

1j*Z   # legal

array([0.+0.j,0.+1.j,0.+2.j,0.+3.j,0.+4.j])

Z = np.arange(5)

Z/1/1   # legal

array([0.,1.,2.,3.,4.])

Z = np.arange(5)

ZZ    # false

ValueError:

Thetruthvalueofanarraywithmorethanoneelementisambiguous.Usea.any()ora.all()

28.下列表达式的结果分别是什么?

(★☆☆)

np.array(0)/np.array(0)

np.array(0)//np.array(0)

np.array([np.nan]).astype(int).astype(float)

print(np.array(0) / np.array(0))

print(np.array(0) // np.array(0))

print(np.array([np.nan]).astype(int).astype(float))

29.如何从零位对浮点数组做舍入?

(★☆☆)

(提示:

np.uniform,np.copysign,np.ceil,np.abs)

Z = np.random.uniform(-10,+10,10)

print (np.copysign(np.ceil(np.abs(Z)), Z))

30.如何找到两个数组中的共同元素?

(★☆☆)

(提示:

np.intersect1d)

Z1 = np.random.randint(0,10,10)

Z2 = np.random.randint(0,10,10)

print(np.intersect1d(Z1,Z2))

31.如何忽略所有的numpy警告(尽管不建议这么做)?

(★☆☆)

(提示:

np.seterr,np.errstate)

# Suicide mode on

defaults = np.seterr(all="ignore")

Z = np.ones

(1) / 0

# Back to sanity

_ = np.seterr(**defaults)

Anequivalentway,withacontextmanager:

with np.errstate(divide='ignore'):

    Z = np.ones

(1) / 0

32.下面的表达式是正确的吗?

(★☆☆)

(提示:

imaginarynumber)

np.sqrt(-1)==np.emath.sqrt(-1)

np.sqrt(-1) == np.emath.sqrt(-1)  

False

33.如何得到昨天,今天,明天的日期?

(★☆☆)

(提示:

np.datetime64,np.timedelta64)

yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')

today     = np.datetime64('today', 'D')

tomorrow  = np.datetime64('today', 'D') + np.timedelta64(1, 'D')

print ("Yesterday is " + str(yesterday))

print ("Today is " + str(today))

print ("Tomorrow is "+ str(tomorrow))

34.如何得到所有与2016年7月对应的日期?

(★★☆)

(提示:

np.arange(dtype=datetime64['D']))

Z = np.arange('2016-07', '2016-08', dtype='datetime64[D]')

print(Z)

35.如何直接在位计算(A+B)*(-A/2)(不建立副本)?

(★★☆)

(提示:

np.add(out=),np.negative(out=),np.multiply(out=),np.divide(out=))

A = np.ones(3)*1

B = np.ones(3)*2

C = np.ones(3)*3

np.add(A,B,out=B)

np.divide(A,2,out=A)

np.negative(A,out=A)

np.multiply(A,B,out=A)

array([-1.5,-1.5,-1.5])

36.用五种不同的方法去提取一个随机数组的整数部分(★★☆)

(提示:

%,np.floor,np.ceil,astype,np.trunc)

Z = np.random.uniform(0,10,10)

print (Z - Z%1)

print (np.floor(Z))

print (np.ceil(Z)-1)

print (Z.astype(int))

print (np.trunc(Z))

37.创建一个5x5的矩阵,其中每行的数值范围从0到4(★★☆)

(提示:

np.arange)

Z = np.zeros((5,5))

Z += np.arange(5)

print (Z)

38.通过考虑一个可生成10个整数的函数,来构建一个数组(★☆☆)

(提示:

np.fromiter)

def generate():

    for x in range(10):

        yield x

Z = np.fromiter(generate(),dtype=float,count=-1)

print (Z)

[0.1.2.3.4.5.6.7.8.9.]

39.创建一个长度为10的随机向量,其值域范围从0到1,但是不包括0和1(★★☆)

(提示:

np.linspace)

Z = np.linspace(0,1,11,endpoint=False)[1:

]

print (Z)

40.创建一个长度为10的随机向量,并将其排序(★★☆)

(提示:

sort)

Z = np.random.random(10)

Z.sort()

print (Z)

41.对于一个小数组,如何用比np.sum更快的方式对其求和?

(★★☆)

(提示:

np.add.reduce)

Z = np.arange(10)

np.add.reduce(Z)

42.对于两个随机数组A和B,检查它们是否相等(★★☆)

(提示:

np.allclose,np.array_equal)

A = np.random.randint(0,2,5)

B = np.random.randint(0,2,5)

# Assuming identical shape of the arrays and a tolerance for the comparison of values

equal = np.allclose(A,B)

print(equal)

False

# 方法2

# Checking both the shape and the element values, no tolerance (values have to be exactly equal)

equal = np.array_equal(A,B)

print(equal)

False

43.创建一个只读数组(read-only)(★★☆)

(提示:

flags.writeable)

# 使用如下过程实现

Z = np.zeros(10)

Z.flags.writeable = False

Z[0] = 1

44.将笛卡尔坐标下的一个10x2的矩阵转换为极坐标形式(★★☆)

(hint:

np.sqrt,np.arctan2)

Z = np.random.random((10,2))

X,Y = Z[:

0], Z[:

1]

R = np.sqrt(X**2+Y**2)

T = np.arctan2(Y,X)

print (R)

print (T)

45.创建一个长度为10的向量,并将向量中最大值替换为1(★★☆)

(提示:

argmax)

Z = np.random.random(10)

Z[Z.argmax()] = 0

print (Z)

46.创建一个结构化数组,并实现x和y坐标覆盖[0,1]x[0,1]区域(★★☆)

(提示:

np.meshgrid)

Z = np.zeros((5,5), [('x',float),('y',float)])

Z['x'], Z['y'] = np.meshgrid(np.linspace(0,1,5),

                             np.linspace(0,1,5))

print(Z)

47.给定两个数组X和Y,构造Cauchy矩阵C(Cij=1/(xi-yj))

(提示:

np.subtract.outer)

X = np.arange(8)

Y = X + 0.5

C = 1.0 / np.subtract.outer(X, Y)

print(np.linalg.det(C))

48.打印每个numpy标量类型的最小值和最大值?

(★★☆)

(提示:

np.iinfo,np.finfo,eps)

for dtype in [np.int8, np.int32, np.int64]:

    print(np.iinfo(dtype).min)

    print(np.iinfo(dtype).max)

for dtype in [np.float32, np.float64]:

    print(np.finfo(dtype).min)

    print(np.finfo(dtype).max)

    print(np.finfo(dtype).eps)

49.如何打印一个数组中的所有数值?

(★★☆)

(提示:

np.set_printoptions)

np.set_printoptions(threshold=np.nan)

Z = np.zeros((16,16))

print (Z)

50.给定标量时,如何找到数组中最接近标量的值?

(★★☆)

(提示:

argmin)

Z = np.arange(100)

v = np.random.uniform(0,100)

index = (np.abs(Z-v)).argmin()

print (Z[index])

51.创建一个表示位置(x,y)和颜色(r,g,b)的结构化数组(★★☆)

(提示:

dtype)

Z = np.zeros(10, [ ('position', [ ('x', float, 1),

                                  ('y', float, 1)]),

                   ('color',    [ ('r', float, 1),

                                  ('g', float, 1),

                                  ('b', float, 1)])])

print (Z)

52.对一个表示坐标形状为(100,2)的随机向量,找到点与点的距离(★★☆)

(提示:

np.atleast_2d,T,np.sqrt)

Z = np.random.random((10,2))

X,Y = np.atleast_2d(Z[:

0], Z[:

1])

D = np.sqrt( (X-X.T)**2 + (Y-Y.T)**2)

print (D)

# 方法2

# Much faster with scipy

import scipy

# Thanks Gavin Heverly-Coulson (#issue 1)

import scipy.spatial

D = scipy.spatial.distance.cdist(Z,Z)

print (D)

53.如何将32位的浮点数(float)转换为对应的整数(integer)?

(提示:

astype(copy=False))

Z = np.arange(10, dtype=np.int32)

Z = Z.astype(np.float32, copy=False)

print (Z)

54.如何读取以下文件?

(★★☆)

(提示:

np.genfromtxt)

1, 2, 3, 4, 5

6,  ,  , 7, 8

 ,  , 9,10,11

参考链接:

https:

//docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.genfromtxt.html

55.对于numpy数组,enumerate的等价操作是什么?

(★★☆)

(提示:

np.ndenumerate,np.ndindex)

Z = np.arange(9).reshape(3,3)

for index, value in np.ndenumerate(Z):

    print (index, value)

for index in np.ndindex(Z.shape):

    print (index, Z[index])

56.生成一个通用的二维Gaussian-like数组(★★☆)

(提示:

np.meshgrid,np.exp)

X, Y = np.meshgrid(np.linspace(-1,1,10), np.linspace(-1,1,10))

D = np.sqrt(X*X+Y*Y)

sigma, mu = 1.0, 0.0

G = np.exp(-( (D-mu)**2 / ( 2.0 * sigma**2 ) ) )

print (G)

57.对一个二维数组,如何在其内部随机放置p个元素?

(★★☆)

(提示:

np.put,np.random.choice)

n = 10

p = 3

Z = np.zeros((n,n))

np.put(Z, np.random.choice(range(n*n), p, replace=False),1)

print (Z)

58.减去一个矩阵中的每一行的平均值(★★☆)

(提示:

mean(axis=,keepdims=))

X = np.random.rand(5, 10)

# Recent versions of numpy

Y = X - X.mean(axis=1, keepdims=True)

print(Y)

# 方法2

# Older versions of numpy

Y

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1