0
点赞
收藏
分享

微信扫一扫

numpy_4数学函数及逻辑函数

逻辑函数

# 逻辑函数-真值测试
import numpy as np

a = np.array([0, 4, 5])
b = np.copy(a)
print(np.all(a == b))  # True
print(np.any(a == b))  # True

b[0] = 1
print(np.all(a == b))  # False
print(np.any(a == b))  # True

print(np.all([1.0, np.nan]))  # True
print(np.any([1.0, np.nan]))  # True

a = np.eye(3)
print(np.all(a, axis=0))  # [False False False]
print(np.any(a, axis=0))  # [ True  True  True]
True
True
False
True
True
True
[False False False]
[ True  True  True]
a=np.array([1,2,np.nan])
print(np.isnan(a))
#[False False  True]
[False False  True]
# 计算非x元素的真值
import numpy as np

print(np.logical_not(3))  
# False
print(np.logical_not([True, False, 0, 1]))
# [False  True  True False]

x = np.arange(5)
print(x)
print(np.logical_not(x < 3))
# [False False False  True  True]
False
[False  True  True False]
[0 1 2 3 4]
[False False False  True  True]
# 计算x1 AND x2元素的真值。
print(np.logical_and(True, False))  
# False
print(np.logical_and([True, False], [True, False]))
# [ True False]
print(np.logical_and(x > 1, x < 4))
# [False False  True  True False]
False
[ True False]
[False False  True  True False]
# 逐元素计算x1 OR x2的真值。
print(np.logical_or(True, False))
# True
print(np.logical_or([True, False], [False, False]))
# [ True False]
print(np.logical_or(x < 1, x > 3))
# [ True False False False  True]
True
[ True False]
[ True False False False  True]
# 计算x1 XOR x2的真值,按元素计算。
print(np.logical_xor(True, False))
# True
print(np.logical_xor([True, True, False, False], [True, False, True, False]))
# [False  True  True False]
print(np.logical_xor(x < 1, x > 3))
# [ True False False False  True]
print(np.logical_xor(0, np.eye(2)))
# [[ True False]
#  [False  True]]
True
[False  True  True False]
[ True False False False  True]
[[ True False]
 [False  True]]
# 对照函数
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])

y = x > 2
print(y)
print(np.greater(x, 2))
# [False False  True  True  True  True  True  True]

y = x >= 2
print(y)
print(np.greater_equal(x, 2))
# [False  True  True  True  True  True  True  True]

y = x == 2
print(y)
print(np.equal(x, 2))
# [False  True False False False False False False]

y = x != 2
print(y)
print(np.not_equal(x, 2))
# [ True False  True  True  True  True  True  True]

y = x < 2
print(y)
print(np.less(x, 2))
# [ True False False False False False False False]

y = x <= 2
print(y)
print(np.less_equal(x, 2))
# [ True  True False False False False False False]
[False False  True  True  True  True  True  True]
[False False  True  True  True  True  True  True]
[False  True  True  True  True  True  True  True]
[False  True  True  True  True  True  True  True]
[False  True False False False False False False]
[False  True False False False False False False]
[ True False  True  True  True  True  True  True]
[ True False  True  True  True  True  True  True]
[ True False False False False False False False]
[ True False False False False False False False]
[ True  True False False False False False False]
[ True  True False False False False False False]
import numpy as np

x = np.array([[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]])
y = x > 20
print(y)
print(np.greater(x, 20))
# [[False False False False False]
#  [False False False False False]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]]

y = x >= 20
print(y)
print(np.greater_equal(x, 20))
# [[False False False False False]
#  [False False False False  True]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]]

y = x == 20
print(y)
print(np.equal(x, 20))
# [[False False False False False]
#  [False False False False  True]
#  [False False False False False]
#  [False False False False False]
#  [False False False False False]]

y = x != 20
print(y)
print(np.not_equal(x, 20))
# [[ True  True  True  True  True]
#  [ True  True  True  True False]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]]


y = x < 20
print(y)
print(np.less(x, 20))
# [[ True  True  True  True  True]
#  [ True  True  True  True False]
#  [False False False False False]
#  [False False False False False]
#  [False False False False False]]

y = x <= 20
print(y)
print(np.less_equal(x, 20))
# [[ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [False False False False False]
#  [False False False False False]
#  [False False False False False]]
[[False False False False False]
 [False False False False False]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]
[[False False False False False]
 [False False False False False]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]
[[False False False False False]
 [False False False False  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]
[[False False False False False]
 [False False False False  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]
[[False False False False False]
 [False False False False  True]
 [False False False False False]
 [False False False False False]
 [False False False False False]]
[[False False False False False]
 [False False False False  True]
 [False False False False False]
 [False False False False False]
 [False False False False False]]
[[ True  True  True  True  True]
 [ True  True  True  True False]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]
[[ True  True  True  True  True]
 [ True  True  True  True False]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]
[[ True  True  True  True  True]
 [ True  True  True  True False]
 [False False False False False]
 [False False False False False]
 [False False False False False]]
[[ True  True  True  True  True]
 [ True  True  True  True False]
 [False False False False False]
 [False False False False False]
 [False False False False False]]
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [False False False False False]
 [False False False False False]
 [False False False False False]]
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [False False False False False]
 [False False False False False]
 [False False False False False]]
import numpy as np

np.random.seed(20200611)
x = np.array([[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]])

y = np.random.randint(10, 40, [5, 5])
print(y)
# [[32 28 31 33 37]
#  [23 37 37 30 29]
#  [32 24 10 33 15]
#  [27 17 10 36 16]
#  [25 32 23 39 34]]

z = x > y
print(z)
print(np.greater(x, y))
# [[False False False False False]
#  [False False False False False]
#  [False False  True False  True]
#  [False  True  True False  True]
#  [ True False  True False  True]]

z = x >= y
print(z)
print(np.greater_equal(x, y))
# [[False False False False False]
#  [False False False False False]
#  [False False  True False  True]
#  [False  True  True False  True]
#  [ True  True  True False  True]]

z = x == y
print(z)
print(np.equal(x, y))
# [[False False False False False]
#  [False False False False False]
#  [False False False False False]
#  [False False False False False]
#  [False  True False False False]]

z = x != y
print(z)
print(np.not_equal(x, y))
# [[ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [ True False  True  True  True]]

z = x < y
print(z)
print(np.less(x, y))
# [[ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [ True  True False  True False]
#  [ True False False  True False]
#  [False False False  True False]]

z = x <= y
print(z)
print(np.less_equal(x, y))
# [[ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [ True  True False  True False]
#  [ True False False  True False]
#  [False  True False  True False]]
[[32 28 31 33 37]
 [23 37 37 30 29]
 [32 24 10 33 15]
 [27 17 10 36 16]
 [25 32 23 39 34]]
[[False False False False False]
 [False False False False False]
 [False False  True False  True]
 [False  True  True False  True]
 [ True False  True False  True]]
[[False False False False False]
 [False False False False False]
 [False False  True False  True]
 [False  True  True False  True]
 [ True False  True False  True]]
[[False False False False False]
 [False False False False False]
 [False False  True False  True]
 [False  True  True False  True]
 [ True  True  True False  True]]
[[False False False False False]
 [False False False False False]
 [False False  True False  True]
 [False  True  True False  True]
 [ True  True  True False  True]]
[[False False False False False]
 [False False False False False]
 [False False False False False]
 [False False False False False]
 [False  True False False False]]
[[False False False False False]
 [False False False False False]
 [False False False False False]
 [False False False False False]
 [False  True False False False]]
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True False  True  True  True]]
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True False  True  True  True]]
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True False  True False]
 [ True False False  True False]
 [False False False  True False]]
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True False  True False]
 [ True False False  True False]
 [False False False  True False]]
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True False  True False]
 [ True False False  True False]
 [False  True False  True False]]
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True False  True False]
 [ True False False  True False]
 [False  True False  True False]]
import numpy as np

x = np.array([[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]])

np.random.seed(20200611)
y = np.random.randint(10, 50, 5)

print(y)
# [32 37 30 24 10]
print('==============================')
z = x > y
print(z)
print('==============================')
print(np.greater(x, y))
# [[False False False False  True]
#  [False False False False  True]
#  [False False False False  True]
#  [False False False  True  True]
#  [False False  True  True  True]]
print('==============================')
print('==============================')

z = x >= y
print(z)
print('==============================')
print(np.greater_equal(x, y))
# [[False False False False  True]
#  [False False False False  True]
#  [False False False  True  True]
#  [False False False  True  True]
#  [False False  True  True  True]]
print('==============================')
print('==============================')

z = x == y
print(z)
print('==============================')
print(np.equal(x, y))
# [[False False False False False]
#  [False False False False False]
#  [False False False  True False]
#  [False False False False False]
#  [False False False False False]]
print('==============================')
print('==============================')

z = x != y
print(z)
print('==============================')
print(np.not_equal(x, y))
# [[ True  True  True  True  True]
#  [ True  True  True  True  True]
#  [ True  True  True False  True]
#  [ True  True  True  True  True]
#  [ True  True  True  True  True]]
print('==============================')
print('==============================')
z = x < y
print(z)
print('==============================')
print(np.less(x, y))
# [[ True  True  True  True False]
#  [ True  True  True  True False]
#  [ True  True  True False False]
#  [ True  True  True False False]
#  [ True  True False False False]]
print('==============================')
print('==============================')
z = x <= y
print(z)
print('==============================')
print(np.less_equal(x, y))
# [[ True  True  True  True False]
#  [ True  True  True  True False]
#  [ True  True  True  True False]
#  [ True  True  True False False]
#  [ True  True False False False]]
[32 37 30 24 10]
==============================
[[False False False False  True]
 [False False False False  True]
 [False False False False  True]
 [False False False  True  True]
 [False False  True  True  True]]
==============================
[[False False False False  True]
 [False False False False  True]
 [False False False False  True]
 [False False False  True  True]
 [False False  True  True  True]]
==============================
==============================
[[False False False False  True]
 [False False False False  True]
 [False False False  True  True]
 [False False False  True  True]
 [False False  True  True  True]]
==============================
[[False False False False  True]
 [False False False False  True]
 [False False False  True  True]
 [False False False  True  True]
 [False False  True  True  True]]
==============================
==============================
[[False False False False False]
 [False False False False False]
 [False False False  True False]
 [False False False False False]
 [False False False False False]]
==============================
[[False False False False False]
 [False False False False False]
 [False False False  True False]
 [False False False False False]
 [False False False False False]]
==============================
==============================
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True False  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]
==============================
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True False  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]
==============================
==============================
[[ True  True  True  True False]
 [ True  True  True  True False]
 [ True  True  True False False]
 [ True  True  True False False]
 [ True  True False False False]]
==============================
[[ True  True  True  True False]
 [ True  True  True  True False]
 [ True  True  True False False]
 [ True  True  True False False]
 [ True  True False False False]]
==============================
==============================
[[ True  True  True  True False]
 [ True  True  True  True False]
 [ True  True  True  True False]
 [ True  True  True False False]
 [ True  True False False False]]
==============================
[[ True  True  True  True False]
 [ True  True  True  True False]
 [ True  True  True  True False]
 [ True  True  True False False]
 [ True  True False False False]]
# 比较两个数组是否可以认为相等。
import numpy as np

x = np.isclose([1e10, 1e-7], [1.00001e10, 1e-8])
print(x)  # [ True False]

x = np.allclose([1e10, 1e-7], [1.00001e10, 1e-8])
print(x)  # False

x = np.isclose([1e10, 1e-8], [1.00001e10, 1e-9])
print(x)  # [ True  True]

x = np.allclose([1e10, 1e-8], [1.00001e10, 1e-9])
print(x)  # True

x = np.isclose([1e10, 1e-8], [1.0001e10, 1e-9])
print(x)  # [False  True]

x = np.allclose([1e10, 1e-8], [1.0001e10, 1e-9])
print(x)  # False

x = np.isclose([1.0, np.nan], [1.0, np.nan])
print(x)  # [ True False]

x = np.allclose([1.0, np.nan], [1.0, np.nan])
print(x)  # False

x = np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True)
print(x)  # [ True  True]

x = np.allclose([1.0, np.nan], [1.0, np.nan], equal_nan=True)
print(x)  # True
1
[ True False]
False
[ True  True]
True
[False  True]
False
[ True False]
False
[ True  True]
True





1

广播

# 二维数组加一维数组
import numpy as np

x = np.arange(4)
y = np.ones((3, 4))
print('x : \n',x)
print('y: \n',y)
print('x.shape: \n',x.shape)  # (4,)
print('y.shape: \n',y.shape)  # (3, 4)

print('(x + y).shape: \n',(x + y).shape)  # (3, 4)
print('x + y: \n', x + y)
# [[1. 2. 3. 4.]
#  [1. 2. 3. 4.]
#  [1. 2. 3. 4.]]
x : 
 [0 1 2 3]
y: 
 [[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
x.shape: 
 (4,)
y.shape: 
 (3, 4)
(x + y).shape: 
 (3, 4)
x + y: 
 [[1. 2. 3. 4.]
 [1. 2. 3. 4.]
 [1. 2. 3. 4.]]
#两个数组均需要广播
import numpy as np

x = np.arange(4).reshape(4, 1)
y = np.ones(5)

print('x : \n',x)
print('y: \n',y)
print('x.shape: \n',x.shape)  # (4,1)
print('y.shape: \n',y.shape)  # (5, )


print((x + y).shape)  # (4, 5)
print(x + y)
# [[1. 1. 1. 1. 1.]
#  [2. 2. 2. 2. 2.]
#  [3. 3. 3. 3. 3.]
#  [4. 4. 4. 4. 4.]]

x = np.array([0.0, 10.0, 20.0, 30.0])
print(x.shape)
y = np.array([1.0, 2.0, 3.0])
print(y.shape)
z = x[:, np.newaxis] + y
print(x[:, np.newaxis])
print(z.shape) #(4, 3)
print(z)
# [[ 1.  2.  3.]
#  [11. 12. 13.]
#  [21. 22. 23.]
#  [31. 32. 33.]]

x : 
 [[0]
 [1]
 [2]
 [3]]
y: 
 [1. 1. 1. 1. 1.]
x.shape: 
 (4, 1)
y.shape: 
 (5,)
(4, 5)
[[1. 1. 1. 1. 1.]
 [2. 2. 2. 2. 2.]
 [3. 3. 3. 3. 3.]
 [4. 4. 4. 4. 4.]]
(4,)
(3,)
[[ 0.]
 [10.]
 [20.]
 [30.]]
(4, 3)
[[ 1.  2.  3.]
 [11. 12. 13.]
 [21. 22. 23.]
 [31. 32. 33.]]
# 不匹配报错
import numpy as np

x = np.arange(4)
y = np.ones(5)

print(x.shape)  # (4,)
print(y.shape)  # (5,)

print(x + y)
(4,)
(5,)



---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

/tmp/ipykernel_674868/3537277039.py in <module>
      8 print(y.shape)  # (5,)
      9 
---> 10 print(x + y)


ValueError: operands could not be broadcast together with shapes (4,) (5,) 

数学函数

import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = x + 1
print(y)
print(np.add(x, 1))
# [2 3 4 5 6 7 8 9]

y = x - 1
print(y)
print(np.subtract(x, 1))
# [0 1 2 3 4 5 6 7]

y = x * 2
print(y)
print(np.multiply(x, 2))
# [ 2  4  6  8 10 12 14 16]

y = x / 2
print(y)
print(np.divide(x, 2))
# [0.5 1.  1.5 2.  2.5 3.  3.5 4. ]

y = x // 2
print(y)
print(np.floor_divide(x, 2))
# [0 1 1 2 2 3 3 4]

y = x ** 2
print(y)
print(np.power(x, 2))
# [ 1  4  9 16 25 36 49 64]

[2 3 4 5 6 7 8 9]
[2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7]
[0 1 2 3 4 5 6 7]
[ 2  4  6  8 10 12 14 16]
[ 2  4  6  8 10 12 14 16]
[0.5 1.  1.5 2.  2.5 3.  3.5 4. ]
[0.5 1.  1.5 2.  2.5 3.  3.5 4. ]
[0 1 1 2 2 3 3 4]
[0 1 1 2 2 3 3 4]
[ 1  4  9 16 25 36 49 64]
[ 1  4  9 16 25 36 49 64]
import numpy as np

x = np.array([[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]])
y = x + 1
print(y)
print(np.add(x, 1))
# [[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]]

y = x - 1
print(y)
print(np.subtract(x, 1))
# [[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]]

y = x * 2
print(y)
print(np.multiply(x, 2))
# [[22 24 26 28 30]
#  [32 34 36 38 40]
#  [42 44 46 48 50]
#  [52 54 56 58 60]
#  [62 64 66 68 70]]

y = x / 2
print(y)
print(np.divide(x, 2))
# [[ 5.5  6.   6.5  7.   7.5]
#  [ 8.   8.5  9.   9.5 10. ]
#  [10.5 11.  11.5 12.  12.5]
#  [13.  13.5 14.  14.5 15. ]
#  [15.5 16.  16.5 17.  17.5]]

y = x // 2
print(y)
print(np.floor_divide(x, 2))
# [[ 5  6  6  7  7]
#  [ 8  8  9  9 10]
#  [10 11 11 12 12]
#  [13 13 14 14 15]
#  [15 16 16 17 17]]

y = x ** 2
print(y)
print(np.power(x, 2))
# [[ 121  144  169  196  225]
#  [ 256  289  324  361  400]
#  [ 441  484  529  576  625]
#  [ 676  729  784  841  900]
#  [ 961 1024 1089 1156 1225]]
[[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]]
[[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]]
[[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]]
[[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]]
[[22 24 26 28 30]
 [32 34 36 38 40]
 [42 44 46 48 50]
 [52 54 56 58 60]
 [62 64 66 68 70]]
[[22 24 26 28 30]
 [32 34 36 38 40]
 [42 44 46 48 50]
 [52 54 56 58 60]
 [62 64 66 68 70]]
[[ 5.5  6.   6.5  7.   7.5]
 [ 8.   8.5  9.   9.5 10. ]
 [10.5 11.  11.5 12.  12.5]
 [13.  13.5 14.  14.5 15. ]
 [15.5 16.  16.5 17.  17.5]]
[[ 5.5  6.   6.5  7.   7.5]
 [ 8.   8.5  9.   9.5 10. ]
 [10.5 11.  11.5 12.  12.5]
 [13.  13.5 14.  14.5 15. ]
 [15.5 16.  16.5 17.  17.5]]
[[ 5  6  6  7  7]
 [ 8  8  9  9 10]
 [10 11 11 12 12]
 [13 13 14 14 15]
 [15 16 16 17 17]]
[[ 5  6  6  7  7]
 [ 8  8  9  9 10]
 [10 11 11 12 12]
 [13 13 14 14 15]
 [15 16 16 17 17]]
[[ 121  144  169  196  225]
 [ 256  289  324  361  400]
 [ 441  484  529  576  625]
 [ 676  729  784  841  900]
 [ 961 1024 1089 1156 1225]]
[[ 121  144  169  196  225]
 [ 256  289  324  361  400]
 [ 441  484  529  576  625]
 [ 676  729  784  841  900]
 [ 961 1024 1089 1156 1225]]
import numpy as np

x = np.array([[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]])

y = np.arange(1, 6)
print(y)
# [1 2 3 4 5]

z = x + y
print(z)
print(np.add(x, y))
# [[12 14 16 18 20]
#  [17 19 21 23 25]
#  [22 24 26 28 30]
#  [27 29 31 33 35]
#  [32 34 36 38 40]]

z = x - y
print(z)
print(np.subtract(x, y))
# [[10 10 10 10 10]
#  [15 15 15 15 15]
#  [20 20 20 20 20]
#  [25 25 25 25 25]
#  [30 30 30 30 30]]

z = x * y
print(z)
print(np.multiply(x, y))
# [[ 11  24  39  56  75]
#  [ 16  34  54  76 100]
#  [ 21  44  69  96 125]
#  [ 26  54  84 116 150]
#  [ 31  64  99 136 175]]

z = x / y
print(z)
print(np.divide(x, y))
# [[11.          6.          4.33333333  3.5         3.        ]
#  [16.          8.5         6.          4.75        4.        ]
#  [21.         11.          7.66666667  6.          5.        ]
#  [26.         13.5         9.33333333  7.25        6.        ]
#  [31.         16.         11.          8.5         7.        ]]

z = x // y
print(z)
print(np.floor_divide(x, y))
# [[11  6  4  3  3]
#  [16  8  6  4  4]
#  [21 11  7  6  5]
#  [26 13  9  7  6]
#  [31 16 11  8  7]]

z = x ** np.full([1, 5], 2)
print(z)
print(np.power(x, np.full([5, 5], 2)))
# [[ 121  144  169  196  225]
#  [ 256  289  324  361  400]
#  [ 441  484  529  576  625]
#  [ 676  729  784  841  900]
#  [ 961 1024 1089 1156 1225]]
[1 2 3 4 5]
[[12 14 16 18 20]
 [17 19 21 23 25]
 [22 24 26 28 30]
 [27 29 31 33 35]
 [32 34 36 38 40]]
[[12 14 16 18 20]
 [17 19 21 23 25]
 [22 24 26 28 30]
 [27 29 31 33 35]
 [32 34 36 38 40]]
[[10 10 10 10 10]
 [15 15 15 15 15]
 [20 20 20 20 20]
 [25 25 25 25 25]
 [30 30 30 30 30]]
[[10 10 10 10 10]
 [15 15 15 15 15]
 [20 20 20 20 20]
 [25 25 25 25 25]
 [30 30 30 30 30]]
[[ 11  24  39  56  75]
 [ 16  34  54  76 100]
 [ 21  44  69  96 125]
 [ 26  54  84 116 150]
 [ 31  64  99 136 175]]
[[ 11  24  39  56  75]
 [ 16  34  54  76 100]
 [ 21  44  69  96 125]
 [ 26  54  84 116 150]
 [ 31  64  99 136 175]]
[[11.          6.          4.33333333  3.5         3.        ]
 [16.          8.5         6.          4.75        4.        ]
 [21.         11.          7.66666667  6.          5.        ]
 [26.         13.5         9.33333333  7.25        6.        ]
 [31.         16.         11.          8.5         7.        ]]
[[11.          6.          4.33333333  3.5         3.        ]
 [16.          8.5         6.          4.75        4.        ]
 [21.         11.          7.66666667  6.          5.        ]
 [26.         13.5         9.33333333  7.25        6.        ]
 [31.         16.         11.          8.5         7.        ]]
[[11  6  4  3  3]
 [16  8  6  4  4]
 [21 11  7  6  5]
 [26 13  9  7  6]
 [31 16 11  8  7]]
[[11  6  4  3  3]
 [16  8  6  4  4]
 [21 11  7  6  5]
 [26 13  9  7  6]
 [31 16 11  8  7]]
[[ 121  144  169  196  225]
 [ 256  289  324  361  400]
 [ 441  484  529  576  625]
 [ 676  729  784  841  900]
 [ 961 1024 1089 1156 1225]]
[[ 121  144  169  196  225]
 [ 256  289  324  361  400]
 [ 441  484  529  576  625]
 [ 676  729  784  841  900]
 [ 961 1024 1089 1156 1225]]
import numpy as np

x = np.array([[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]])

y = np.arange(1, 26).reshape([5, 5])
print(y)
# [[ 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]]

z = x + y
print(z)
print(np.add(x, y))
# [[12 14 16 18 20]
#  [22 24 26 28 30]
#  [32 34 36 38 40]
#  [42 44 46 48 50]
#  [52 54 56 58 60]]

z = x - y
print(z)
print(np.subtract(x, y))
# [[10 10 10 10 10]
#  [10 10 10 10 10]
#  [10 10 10 10 10]
#  [10 10 10 10 10]
#  [10 10 10 10 10]]

z = x * y
print(z)
print(np.multiply(x, y))
# [[ 11  24  39  56  75]
#  [ 96 119 144 171 200]
#  [231 264 299 336 375]
#  [416 459 504 551 600]
#  [651 704 759 816 875]]

z = x / y
print(z)
print(np.divide(x, y))
# [[11.          6.          4.33333333  3.5         3.        ]
#  [ 2.66666667  2.42857143  2.25        2.11111111  2.        ]
#  [ 1.90909091  1.83333333  1.76923077  1.71428571  1.66666667]
#  [ 1.625       1.58823529  1.55555556  1.52631579  1.5       ]
#  [ 1.47619048  1.45454545  1.43478261  1.41666667  1.4       ]]

z = x // y
print(z)
print(np.floor_divide(x, y))
# [[11  6  4  3  3]
#  [ 2  2  2  2  2]
#  [ 1  1  1  1  1]
#  [ 1  1  1  1  1]
#  [ 1  1  1  1  1]]

z = x ** np.full([5, 5], 2)
print(z)
print(np.power(x, np.full([5, 5], 2)))
# [[ 121  144  169  196  225]
#  [ 256  289  324  361  400]
#  [ 441  484  529  576  625]
#  [ 676  729  784  841  900]
#  [ 961 1024 1089 1156 1225]]
[[ 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]]
[[12 14 16 18 20]
 [22 24 26 28 30]
 [32 34 36 38 40]
 [42 44 46 48 50]
 [52 54 56 58 60]]
[[12 14 16 18 20]
 [22 24 26 28 30]
 [32 34 36 38 40]
 [42 44 46 48 50]
 [52 54 56 58 60]]
[[10 10 10 10 10]
 [10 10 10 10 10]
 [10 10 10 10 10]
 [10 10 10 10 10]
 [10 10 10 10 10]]
[[10 10 10 10 10]
 [10 10 10 10 10]
 [10 10 10 10 10]
 [10 10 10 10 10]
 [10 10 10 10 10]]
[[ 11  24  39  56  75]
 [ 96 119 144 171 200]
 [231 264 299 336 375]
 [416 459 504 551 600]
 [651 704 759 816 875]]
[[ 11  24  39  56  75]
 [ 96 119 144 171 200]
 [231 264 299 336 375]
 [416 459 504 551 600]
 [651 704 759 816 875]]
[[11.          6.          4.33333333  3.5         3.        ]
 [ 2.66666667  2.42857143  2.25        2.11111111  2.        ]
 [ 1.90909091  1.83333333  1.76923077  1.71428571  1.66666667]
 [ 1.625       1.58823529  1.55555556  1.52631579  1.5       ]
 [ 1.47619048  1.45454545  1.43478261  1.41666667  1.4       ]]
[[11.          6.          4.33333333  3.5         3.        ]
 [ 2.66666667  2.42857143  2.25        2.11111111  2.        ]
 [ 1.90909091  1.83333333  1.76923077  1.71428571  1.66666667]
 [ 1.625       1.58823529  1.55555556  1.52631579  1.5       ]
 [ 1.47619048  1.45454545  1.43478261  1.41666667  1.4       ]]
[[11  6  4  3  3]
 [ 2  2  2  2  2]
 [ 1  1  1  1  1]
 [ 1  1  1  1  1]
 [ 1  1  1  1  1]]
[[11  6  4  3  3]
 [ 2  2  2  2  2]
 [ 1  1  1  1  1]
 [ 1  1  1  1  1]
 [ 1  1  1  1  1]]
[[ 121  144  169  196  225]
 [ 256  289  324  361  400]
 [ 441  484  529  576  625]
 [ 676  729  784  841  900]
 [ 961 1024 1089 1156 1225]]
[[ 121  144  169  196  225]
 [ 256  289  324  361  400]
 [ 441  484  529  576  625]
 [ 676  729  784  841  900]
 [ 961 1024 1089 1156 1225]]
import numpy as np

x = np.arange(1, 5)
print(x)  # [1 2 3 4]

y = np.sqrt(x)
print(y)
# [1.         1.41421356 1.73205081 2.        ]
print(np.power(x, 0.5))
# [1.         1.41421356 1.73205081 2.        ]

y = np.square(x)
print(y)
# [ 1  4  9 16]
print(np.power(x, 2))
# [ 1  4  9 16]
[1 2 3 4]
[1.         1.41421356 1.73205081 2.        ]
[1.         1.41421356 1.73205081 2.        ]
[ 1  4  9 16]
[ 1  4  9 16]
np.full([5, 5], 2)
array([[2, 2, 2, 2, 2],
       [2, 2, 2, 2, 2],
       [2, 2, 2, 2, 2],
       [2, 2, 2, 2, 2],
       [2, 2, 2, 2, 2]])
import numpy as np

x = np.linspace(start=0, stop=np.pi / 2, num=10)
print(x)
# [0.         0.17453293 0.34906585 0.52359878 0.6981317  0.87266463
#  1.04719755 1.22173048 1.3962634  1.57079633]

y = np.sin(x)
print(y)
# [0.         0.17364818 0.34202014 0.5        0.64278761 0.76604444
#  0.8660254  0.93969262 0.98480775 1.        ]

z = np.arcsin(y)
print(z)
# [0.         0.17453293 0.34906585 0.52359878 0.6981317  0.87266463
#  1.04719755 1.22173048 1.3962634  1.57079633]

y = np.cos(x)
print(y)
# [1.00000000e+00 9.84807753e-01 9.39692621e-01 8.66025404e-01
#  7.66044443e-01 6.42787610e-01 5.00000000e-01 3.42020143e-01
#  1.73648178e-01 6.12323400e-17]

z = np.arccos(y)
print(z)
# [0.         0.17453293 0.34906585 0.52359878 0.6981317  0.87266463
#  1.04719755 1.22173048 1.3962634  1.57079633]

y = np.tan(x)
print(y)
# [0.00000000e+00 1.76326981e-01 3.63970234e-01 5.77350269e-01
#  8.39099631e-01 1.19175359e+00 1.73205081e+00 2.74747742e+00
#  5.67128182e+00 1.63312394e+16]

z = np.arctan(y)
print(z)
# [0.         0.17453293 0.34906585 0.52359878 0.6981317  0.87266463
#  1.04719755 1.22173048 1.3962634  1.57079633]

[0.         0.17453293 0.34906585 0.52359878 0.6981317  0.87266463
 1.04719755 1.22173048 1.3962634  1.57079633]
[0.         0.17364818 0.34202014 0.5        0.64278761 0.76604444
 0.8660254  0.93969262 0.98480775 1.        ]
[0.         0.17453293 0.34906585 0.52359878 0.6981317  0.87266463
 1.04719755 1.22173048 1.3962634  1.57079633]
[1.00000000e+00 9.84807753e-01 9.39692621e-01 8.66025404e-01
 7.66044443e-01 6.42787610e-01 5.00000000e-01 3.42020143e-01
 1.73648178e-01 6.12323400e-17]
[0.         0.17453293 0.34906585 0.52359878 0.6981317  0.87266463
 1.04719755 1.22173048 1.3962634  1.57079633]
[0.00000000e+00 1.76326981e-01 3.63970234e-01 5.77350269e-01
 8.39099631e-01 1.19175359e+00 1.73205081e+00 2.74747742e+00
 5.67128182e+00 1.63312394e+16]
[0.         0.17453293 0.34906585 0.52359878 0.6981317  0.87266463
 1.04719755 1.22173048 1.3962634  1.57079633]
# The natural logarithm log is the inverse of the exponential function, so that log(exp(x)) = x. The natural logarithm is logarithm in base e.

import numpy as np

x = np.arange(1, 5)
print(x)
# [1 2 3 4]
y = np.exp(x)
print(y)
# [ 2.71828183  7.3890561  20.08553692 54.59815003]
z = np.log(y)
print(z)
# [1. 2. 3. 4.]

[1 2 3 4]
[ 2.71828183  7.3890561  20.08553692 54.59815003]
[1. 2. 3. 4.]
# 返回给定轴上的数组元素的总和
import numpy as np

x = np.array([[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]])
y = np.sum(x)
print(y)  # 575

y = np.sum(x, axis=0)
print(y)  # [105 110 115 120 125]

y = np.sum(x, axis=1)
print(y)  # [ 65  90 115 140 165]
575
[105 110 115 120 125]
[ 65  90 115 140 165]
# 返回给定轴上的数组元素的累加和
import numpy as np

x = np.array([[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]])
y = np.cumsum(x)
print(y)
# [ 11  23  36  50  65  81  98 116 135 155 176 198 221 245 270 296 323 351
#  380 410 441 473 506 540 575]

y = np.cumsum(x, axis=0)
print(y)
# [[ 11  12  13  14  15]
#  [ 27  29  31  33  35]
#  [ 48  51  54  57  60]
#  [ 74  78  82  86  90]
#  [105 110 115 120 125]]

y = np.cumsum(x, axis=1)
print(y)
# [[ 11  23  36  50  65]
#  [ 16  33  51  70  90]
#  [ 21  43  66  90 115]
#  [ 26  53  81 110 140]
#  [ 31  63  96 130 165]]
[ 11  23  36  50  65  81  98 116 135 155 176 198 221 245 270 296 323 351
 380 410 441 473 506 540 575]
[[ 11  12  13  14  15]
 [ 27  29  31  33  35]
 [ 48  51  54  57  60]
 [ 74  78  82  86  90]
 [105 110 115 120 125]]
[[ 11  23  36  50  65]
 [ 16  33  51  70  90]
 [ 21  43  66  90 115]
 [ 26  53  81 110 140]
 [ 31  63  96 130 165]]
#返回给定轴上的 数组元素的乘积
import numpy as np

x = np.array([[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]])
y = np.prod(x)
print(y)  # 788529152

y = np.prod(x, axis=0)
print(y)
# [2978976 3877632 4972968 6294624 7875000]

y = np.prod(x, axis=1)
print(y)
# [  360360  1860480  6375600 17100720 38955840]
3712525927079477248
[2978976 3877632 4972968 6294624 7875000]
[  360360  1860480  6375600 17100720 38955840]
# 返回给定轴上数组元素的累乘
import numpy as np

x = np.array([[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]])
y = np.cumprod(x)
print(y)
# [         11         132        1716       24024      360360     5765760
#     98017920  1764322560  -837609728   427674624   391232512    17180672
#    395155456   893796352   870072320  1147043840   905412608  -418250752
#    755630080  1194065920 -1638662144  -897581056   444596224 -2063597568
#    788529152]

y = np.cumprod(x, axis=0)
print(y)
# [[     11      12      13      14      15]
#  [    176     204     234     266     300]
#  [   3696    4488    5382    6384    7500]
#  [  96096  121176  150696  185136  225000]
#  [2978976 3877632 4972968 6294624 7875000]]

y = np.cumprod(x, axis=1)
print(y)
# [[      11      132     1716    24024   360360]
#  [      16      272     4896    93024  1860480]
#  [      21      462    10626   255024  6375600]
#  [      26      702    19656   570024 17100720]
#  [      31      992    32736  1113024 38955840]]
[                  11                  132                 1716
                24024               360360              5765760
             98017920           1764322560          33522128640
         670442572800       14079294028800      309744468633600
     7124122778572800   170978946685747200  4274473667143680000
   455850903478370304 -6138769679793553408 -5864854370833530880
 -4060080090786430976  7324805792373932032  5708050679077273600
 -1809819006622760960 -4383794997422456832 -1475077322687119360
  3712525927079477248]
[[     11      12      13      14      15]
 [    176     204     234     266     300]
 [   3696    4488    5382    6384    7500]
 [  96096  121176  150696  185136  225000]
 [2978976 3877632 4972968 6294624 7875000]]
[[      11      132     1716    24024   360360]
 [      16      272     4896    93024  1860480]
 [      21      462    10626   255024  6375600]
 [      26      702    19656   570024 17100720]
 [      31      992    32736  1113024 38955840]]
# 沿着指定轴计算第N维的离散差值
import numpy as np

A = np.arange(2, 14).reshape((3, 4))
print(A)
A[1, 1] = 8
print(A)
# [[ 2  3  4  5]
#  [ 6  8  8  9]
#  [10 11 12 13]]
print(np.diff(A))
# [[1 1 1]
#  [2 0 1]
#  [1 1 1]]
print(np.diff(A, axis=0))
# [[4 5 4 4]
#  [4 3 4 4]]
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
[[ 2  3  4  5]
 [ 6  8  8  9]
 [10 11 12 13]]
[[1 1 1]
 [2 0 1]
 [1 1 1]]
[[4 5 4 4]
 [4 3 4 4]]
# 将数组舍入到给定的小数位数
import numpy as np

x = np.random.rand(3, 3) * 10
print(x)
# [[6.59144457 3.78566113 8.15321227]
#  [1.68241475 3.78753332 7.68886328]
#  [2.84255822 9.58106727 7.86678037]]

y = np.around(x)
print(y)
# [[ 7.  4.  8.]
#  [ 2.  4.  8.]
#  [ 3. 10.  8.]]

y = np.around(x, decimals=2)
print(y)
# [[6.59 3.79 8.15]
#  [1.68 3.79 7.69]
#  [2.84 9.58 7.87]]
[[2.53381034 4.19656566 5.82408314]
 [0.15056819 3.11454291 4.70637488]
 [1.53053372 5.94815398 3.82411538]]
[[3. 4. 6.]
 [0. 3. 5.]
 [2. 6. 4.]]
[[2.53 4.2  5.82]
 [0.15 3.11 4.71]
 [1.53 5.95 3.82]]
import numpy as np

x = np.random.rand(3, 3) * 10
print(x)
# [[0.67847795 1.33073923 4.53920122]
#  [7.55724676 5.88854047 2.65502046]
#  [8.67640444 8.80110812 5.97528726]]

y = np.ceil(x)
print(y)
# [[1. 2. 5.]
#  [8. 6. 3.]
#  [9. 9. 6.]]

y = np.floor(x)
print(y)
# [[0. 1. 4.]
#  [7. 5. 2.]
#  [8. 8. 5.]]
[[1.71712114 3.04108939 8.44499147]
 [0.63699974 5.22265247 8.245768  ]
 [7.20516197 0.68709718 3.78554694]]
[[2. 4. 9.]
 [1. 6. 9.]
 [8. 1. 4.]]
[[1. 3. 8.]
 [0. 5. 8.]
 [7. 0. 3.]]
# 裁剪限制数组中的值
import numpy as np

x = np.array([[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]])
y = np.clip(x, a_min=20, a_max=30)
print(y)
# [[20 20 20 20 20]
#  [20 20 20 20 20]
#  [21 22 23 24 25]
#  [26 27 28 29 30]
#  [30 30 30 30 30]]
[[20 20 20 20 20]
 [20 20 20 20 20]
 [21 22 23 24 25]
 [26 27 28 29 30]
 [30 30 30 30 30]]
import numpy as np

x = np.arange(-5, 5)
print(x)
# [-5 -4 -3 -2 -1  0  1  2  3  4]

y = np.abs(x)
print(y)
# [5 4 3 2 1 0 1 2 3 4]

y = np.absolute(x)
print(y)
# [5 4 3 2 1 0 1 2 3 4]
[-5 -4 -3 -2 -1  0  1  2  3  4]
[5 4 3 2 1 0 1 2 3 4]
[5 4 3 2 1 0 1 2 3 4]
x = np.arange(-5, 5)
print(x)
#[-5 -4 -3 -2 -1  0  1  2  3  4]
print(np.sign(x))
#[-1 -1 -1 -1 -1  0  1  1  1  1]
[-5 -4 -3 -2 -1  0  1  2  3  4]
[-1 -1 -1 -1 -1  0  1  1  1  1]

练习

# 将数组a中大于30的值替换为30,小于10的值替换为10。
import numpy as np

np.set_printoptions(precision=2)
np.random.seed(100)
a = np.random.uniform(1, 50, 20)
print(a)
# [27.63 14.64 21.8  42.39  1.23  6.96 33.87 41.47  7.7  29.18 44.67 11.25
#  10.08  6.31 11.77 48.95 40.77  9.43 41.   14.43]

# 方法1
b = np.clip(a, a_min=10, a_max=30)
print(b)
# [27.63 14.64 21.8  30.   10.   10.   30.   30.   10.   29.18 30.   11.25
#  10.08 10.   11.77 30.   30.   10.   30.   14.43]

# 方法2
b = np.where(a < 10, 10, a)
b = np.where(b > 30, 30, b)
print(b)
# [27.63 14.64 21.8  30.   10.   10.   30.   30.   10.   29.18 30.   11.25
#  10.08 10.   11.77 30.   30.   10.   30.   14.43]

[27.63 14.64 21.8  42.39  1.23  6.96 33.87 41.47  7.7  29.18 44.67 11.25
 10.08  6.31 11.77 48.95 40.77  9.43 41.   14.43]
[27.63 14.64 21.8  30.   10.   10.   30.   30.   10.   29.18 30.   11.25
 10.08 10.   11.77 30.   30.   10.   30.   14.43]
[27.63 14.64 21.8  30.   10.   10.   30.   30.   10.   29.18 30.   11.25
 10.08 10.   11.77 30.   30.   10.   30.   14.43]
# 找到一个一维数字数组a中的所有峰值。峰顶是两边被较小数值包围的点。

import numpy as np

a = np.array([1, 3, 7, 1, 2, 6, 0, 1])
b1 = np.diff(a)
b2 = np.sign(b1)
b3 = np.diff(b2)

print(b1)  # [ 2  4 -6  1  4 -6  1]
print(b2)  # [ 1  1 -1  1  1 -1  1]
print(b3)  # [ 0 -2  2  0 -2  2]
index = np.where(np.equal(b3, -2))[0] + 1
print(index) # [2 5]
print(a[index])
[ 2  4 -6  1  4 -6  1]
[ 1  1 -1  1  1 -1  1]
[ 0 -2  2  0 -2  2]
[2 5]
[7 6]
# 对于给定的一维数组,计算窗口大小为3的移动平均值。
import numpy as np

np.random.seed(100)
z = np.random.randint(10, size=10)
print(z)
# [8 8 3 7 7 0 4 2 5 2]

def MovingAverage(arr, n=3):
    a = np.cumsum(arr)
    print(a)
    a[n:] = a[n:] - a[:-n]
    return a[n - 1:] / n


r = MovingAverage(z, 3)
print(np.around(r, 2))
# [6.33 6.   5.67 4.67 3.67 2.   3.67 3.  ]
[8 8 3 7 7 0 4 2 5 2]
[ 8 16 19 26 33 33 37 39 44 46]
[6.33 6.   5.67 4.67 3.67 2.   3.67 3.  ]
# 对一个5x5的随机矩阵做归一化
Z = np.random.random((5,5))
Zmax, Zmin = Z.max(), Z.min()
Z = (Z - Zmin)/(Zmax - Zmin)
print(Z)
[[0.22 0.47 0.92 0.06 0.65]
 [0.55 0.59 0.   0.32 1.  ]
 [0.13 0.08 0.32 0.66 0.73]
 [0.67 0.97 0.31 0.6  0.18]
 [0.56 0.68 0.14 0.61 0.5 ]]
# 用五种不同的方法去提取一个随机数组的整数部分
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))
[3. 4. 4. 4. 0. 7. 5. 3. 5. 9.]
[3. 4. 4. 4. 0. 7. 5. 3. 5. 9.]
[3. 4. 4. 4. 0. 7. 5. 3. 5. 9.]
[3 4 4 4 0 7 5 3 5 9]
[3. 4. 4. 4. 0. 7. 5. 3. 5. 9.]
# 考虑一维数组Z,构建一个二维数组,其第一行为(Z [0],Z [1],Z [2]),随后的每一行都移位1(最后一行应为(Z [ -3],Z [-2],Z [-1])
# np.arange(10).itemsize
from numpy.lib import stride_tricks
def rolling(a, window):
    shape = (a.size - window + 1, window)
    strides = (a.itemsize, a.itemsize)
    return stride_tricks.as_strided(a, shape=shape, strides=strides)
Z = rolling(np.arange(10), 3)
print (Z)
[[0 1 2]
 [1 2 3]
 [2 3 4]
 [3 4 5]
 [4 5 6]
 [5 6 7]
 [6 7 8]
 [7 8 9]]
# 考虑两组点集P0和P1去描述一组线(二维)和一个点p,如何计算点p到每一条线 i (P0[i],P1[i])的距离?
import numpy as np
def distance(P0,P1,p):
    A=-1/(P1[:,0]-P0[:,0])
    B=1/(P1[:,1]-P0[:,1])
    C=P0[:,0]/(P1[:,0]-P0[:,0])-P0[:,1]/(P1[:,1]-P0[:,1])
    return np.abs(A*p[:,0]+B*p[:,1]+C)/np.sqrt(A**2+B**2)
P0 = np.random.uniform(-10,10,(10,2))
P1 = np.random.uniform(-10,10,(10,2))
p  = np.random.uniform(-10,10,( 1,2))

print (distance(P0, P1, p))
[1.31e+01 9.93e+00 1.04e-02 5.54e+00 7.57e+00 1.04e+01 3.07e-01 6.24e+00
 2.98e+00 9.87e+00]
# 画正弦函数和余弦函数, x = np.arange(0, 3 * np.pi, 0.1)?
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(0, 3*np.pi, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1)
plt.plot(x, y2)
[<matplotlib.lines.Line2D at 0x7f0350b99340>]

在这里插入图片描述

# 减去矩阵每一行的平均值
X = np.random.rand(5, 10)
# 新
Y = X - X.mean(axis=1, keepdims=True)
# 旧
Y = X - X.mean(axis=1).reshape(-1, 1)
print(Y)
[[ 0.06 -0.17  0.52 -0.28 -0.24  0.09 -0.36 -0.12  0.51 -0.03]
 [ 0.05  0.17 -0.3  -0.05 -0.05  0.47 -0.14 -0.19  0.4  -0.36]
 [ 0.24 -0.45  0.11 -0.46  0.37 -0.05  0.07  0.33 -0.4   0.22]
 [-0.05 -0.42 -0.39 -0.    0.54 -0.34  0.11  0.2   0.    0.35]
 [ 0.08  0.1  -0.12  0.11  0.25 -0.06  0.06 -0.25 -0.03 -0.14]]
# 进行概率统计分析
arr1 = np.random.randint(1,10,10)
arr2 = np.random.randint(1,10,10)

print("arr1的平均数为:%s" %np.mean(arr1))
print("arr1的中位数为:%s" %np.median(arr1))
print("arr1的方差为:%s" %np.var(arr1))
print("arr1的标准差为:%s" %np.std(arr1))
print("arr1,arr的相关性矩阵为:%s" %np.cov(arr1,arr2))
print("arr1,arr的协方差矩阵为:%s" %np.corrcoef(arr1,arr2))
arr1的平均数为:3.8
arr1的中位数为:3.5
arr1的方差为:5.56
arr1的标准差为:2.3579652245103193
arr1,arr的相关性矩阵为:[[6.18 2.64]
 [2.64 7.38]]
arr1,arr的协方差矩阵为:[[1.   0.39]
 [0.39 1.  ]]
# 获取a和b元素匹配的位置
import numpy as np

a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
mask = np.equal(a, b)

# 方法1
x = np.where(mask)
print(x)  # (array([1, 3, 5, 7], dtype=int64),)

# 方法2
x = np.nonzero(mask)
print(x)  # (array([1, 3, 5, 7], dtype=int64),)
(array([1, 3, 5, 7]),)
(array([1, 3, 5, 7]),)
# 获取5到10 之间的所有元素
import numpy as np

a = np.array([2, 6, 1, 9, 10, 3, 27])
mask = np.logical_and(np.greater_equal(a, 5), np.less_equal(a, 10))

# 方法1
x = np.where(mask)
print(a[x])  # [ 6  9 10]

# 方法2
x = np.nonzero(mask)
print(a[x])  # [ 6  9 10]

# 方法3
x = a[np.logical_and(a >= 5, a <= 10)]
print(x)  # [ 6  9 10]
[ 6  9 10]
[ 6  9 10]
[ 6  9 10]
# 对于两个随机数组A和B,检查他们是否相等
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
# 何对布尔值取反,或者原位(in-place)改变浮点数的符号(sign)?
Z = np.array([0,1])
print(Z)
np.logical_not(Z, out=Z)
# Z = np.random.uniform(-1.0,1.0,100)

# np.negative(Z, out=Z)
[0 1]





array([1, 0])
Z = np.array([0.2,1.15])
print(Z)
np.negative(Z, out=Z)
[0.2  1.15]





array([-0.2 , -1.15])
# 找出数组中与给定值最接近的数
Z=np.array([[0,1,2,3],[4,5,6,7]])
print(Z)
z=5.1
np.abs(Z - z).argmin()
print(np.abs(Z - z).argmin())
print(Z.flat[np.abs(Z - z).argmin()])
[[0 1 2 3]
 [4 5 6 7]]
5
5


举报

相关推荐

0 条评论