numpy 中的一些函数用法

2019-09-24  本文已影响0人  此间不留白
import numpy as np
Z = np.arange(10)
Z = Z**Z

用以上代码生成的Z数组为[0,1,2,3,4,5,6,7,8,9],而Z**Z的内部计算方式为 [0^0,1^1,2^2,……9^9].

Z =  np.arange(10)
print(2<<Z>>2)

>>>[ 0 1 2 4 8 16 32 64 128 256]

其计算过程可以简单描述为,[2^(0+1)/4,2^(1+1)/4 …… 2^(9+1)/4]
即 2<<Z 表示为[2^(0+1),2^(1+1) …… 2^(9+1)],而Z>>2 就是简单的每个元素除以4了。

print(np.sqrt(-1))  #输出结果为Nan
print(np.emath.sqrt(-1)) #输出结果为1j

>>> nan
>>>1j

import numpy as np
a = np.arange(45).reshape(3,3,5)
print(a)
b = np.add.reduce(a)
print(b,'\n')
c = []
for j in range(3):
    d = []
    for i in range(5):
        print(a[:,j,i],'\t',sum(a[:,j,i]))
        d.append(sum(a[:,j,i]))
    c.append(d)
print(np.array(c))

详细的计算过程,如下输出结果所示:

>>>[[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[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 48 51 54 57]
[60 63 66 69 72]
[75 78 81 84 87]]
计算过程:
[ 0 15 30] 45
[ 1 16 31] 48
[ 2 17 32] 51
[ 3 18 33] 54
[ 4 19 34] 57
[ 5 20 35] 60
[ 6 21 36] 63
[ 7 22 37] 66
[ 8 23 38] 69
[ 9 24 39] 72
[10 25 40] 75
[11 26 41] 78
[12 27 42] 81
[13 28 43] 84
[14 29 44] 87
最后输出:
[[45 48 51 54 57]
[60 63 66 69 72]
[75 78 81 84 87]]

Z = np.random.random(10)
print(Z.max())  #向量的最大值
print(Z.argmax())  #向量最大值的索引
  1. 不指定权重参数W,np.bincount(X)输出是一个其索引值出现的次数,如下代码所示:
X = [0,1,3,2,5,6,3,3]
print(np.bincount(X))

运行如上代码,输出结果为:[1,1,1,3,0,1,1],需要注意的是,输出数组的长度比数组中的最大值+1

  1. minlength参数被指定之后,输出数组的长度为minlength,如下代码所示:
X = [0,2,4,4,2,4,5,6,6]
print(np.bincount(X,minlength = 10))

运行以上代码,输出结果为:[1,0,1,0,3,1,2,0,0,0]

  1. 当weigths参数被指定时,运行结果可以用以下代码详解:
# 关于np.bincount指定权重向量的用法
import numpy as np
X = [1,2,3,4,5,6]
I = [1,3,9,3,4,1]
#最大值是9,所以输出F包含10个元素
#F[0] = 0
#F[1] = X[I[i=1]] = X[0] + X[6] = 1 + 6 = 7
#f[2] = 0 ,I中没有出现2
#F[3] = X[I[i = 3]] = X[1] + X[4]  = 6
#F[4] = X[I[i = 4]] = X[5] = 5
#F[5] = 0 I中没有5
#F[6] = 0 I中没有出现6
#F[7] = 0 I中没有出现7
#F[8] = 0 I中没有出现8
#F[9] = X[I[i=9]] = X[4] = 3  
F = np.bincount(I,X)
print(F)

>>>[0. 7. 0. 6. 5. 0. 0. 0. 0. 3.]

上一篇下一篇

猜你喜欢

热点阅读