python矩阵每个元素加1_Python⼲货-Numpy基础计算numpy基础运算
import numpy as np
创建两个array⽤于运算
# 创建⼀个array,拥有四个元素
a = np.array([10, 20, 30, 40])
# 使⽤arange创建⼀个array,也是拥有四个元素
python生成1到100之间随机数b = np.arange(4)
numpy中的减法运算
c = a - b
# 输出结果
print(a)
print('-'*20)
print(b)
print('-'*20)
print(c)
[10 20 30 40]
--------------------
[0 1 2 3]
--------------------
[10 19 28 37]
通过上例可以看出,两个array,形状⼀样,相减操作会将其对应位置进⾏减法计算,得到⼀个新的array
numpy中的加法运算
c = a + b
# 输出结果
print(a)
print('-'*20)
print(b)
print('-'*20)
print(c)
[10 20 30 40]
--------------------
[0 1 2 3]
--------------------
[10 21 32 43]
同理,两个形状⼀样的array之间相加,会将其对应位置的元素相加,得到⼀个新的array
numpy中的乘法与除法运算
这⾥的乘法与除法的运算与加减法的运算理论是⼀样的,就不再啰嗦,直接看代码
c = a * b
print(c)
[ 0 20 60 120]
c = a / b
print(c)
[ inf 20. 15. 13.33333333]
/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: RuntimeWarning: divide by zero encountered in true_divide
"""Entry point for launching an IPython kernel.
这⾥出现了错误,是因为b中的元素有0,0做除数是会报错的,所以在写除法运算的时候⼀定要注意
array的乘⽅计算
两个星号表⽰乘⽅**
c = a**2
print(c)
[ 100 400 900 1600]
可以看出,新的array中的每个元素都是原来元素的平⽅
numpy中的三⾓函数
# sin函数
c = np.sin(a)
print(c)
[-0.54402111 0.91294525 -0.98803162 0.74511316]
# cos函数
c = np.cos(b)
print(c)
[ 1. 0.54030231 -0.41614684 -0.9899925 ]
# tan函数
c = np.tan(a)
print(c)
[ 0.64836083 2.23716094 -6.4053312 -1.11721493]
三⾓函数也计算每个array的元素对应的结果,然后返回⼀个新的array对象
numpy 中的⽐较运算符
c = a < 30
print(c)
[ True True False False]
这⾥的<;符号,⽤来判断array中每个元素是否⼩于30,如果是,则返回True,否则返回False,最终将返回⼀个都是布尔值的array 同理,<=/ >/ >=/ ==/ !=的⽤法都是⼀样的
c = b > 2
print(c)
[False False False True]
c = b != 2
print(c)
[ True True False True]
矩阵的运算
定义运算⽤的数据
# 定义⼀个矩阵格式的array
a = np.array([[1, 2],
[3, 4]])
# 定义⼀个⼀维array,然后再改变其形状为2⾏2列
b = np.arange(4).reshape(2,2)
print('a is:\n', a)
print('-'*10)
print('b is:\n', b)
a is:
[[1 2]
[3 4]]
----------
b is:
[[0 1]
[2 3]]
矩阵的乘法
c = a * b
print('a is:\n', a)
print('-'*10)
print('b is:\n', b)
print('-'*10)
print('c is:\n', c)
a is:
[[1 2]
[3 4]]
----------
b is:
[[0 1]
[2 3]]
----------
c is:
[[ 0 2]
[ 6 12]]
从上例可以看出,两个矩阵相乘,会将其对应位置的元素相乘,然后得到⼀个新的矩阵;前提是相乘的两个矩阵形状是⼀样的
使⽤numpy的乘法函数dot
c = np.dot(a, b)
print('a is:\n', a)
print('-'*10)
print('b is:\n', b)
print('-'*10)
print('c is:\n', c)
a is:
[[1 2]
[3 4]]
----------
b is:
[[0 1]
[2 3]]
----------
c is:
[[ 4 7]
[ 8 15]]
虽然都是两个矩阵相乘,但是使⽤numpy的dot()函数得到的结果并不⼀样;它的计算⽅式是真正的矩阵乘法运算,即每⾏的元素与对应每列的数两两相乘的和
也就是说,所得到的数组中的每个元素为,第⼀个矩阵中与该元素⾏号相同的元素与第⼆个矩阵与该元素列号相同的元素,两两相乘后再求和
图例
np.dot(a, b)的形式等于a.dot(b)
numpy中的运算函数
定义⼀个随机元素的矩阵
# random 会返回0.0 到 1.0 之间的随机数
# random((2, 4)) 可以告诉该函数⽣成2⾏4列的0.0 到 1.0 的随机数
a = np.random.random((2, 4))
print(a)
[[0.87734668 0.81386455 0.4823868 0.59230853]
[0.67792381 0.68852432 0.61188049 0.74452105]]
print('求矩阵的和:', np.sum(a))
print('求矩阵中的最⼩值:', np.min(a))
print('求矩阵中的最⼤值:', np.max(a))
求矩阵的和: 5.488756232386159
求矩阵中的最⼩值: 0.48238679745409974
求矩阵中的最⼤值: 0.8773466797603833
上⾯的函数使⽤⼀看即会,但是如果想求出列的和或求出⾏的和呢?
print('求矩阵⾏的和:', np.sum(a, axis=1))
print('求矩阵列的和:', np.sum(a, axis=0))
求矩阵⾏的和: [2.76590656 2.72284967]
求矩阵列的和: [1.55527049 1.50238887 1.09426729 1.33682958]
axis=1 表⽰对⾏进⾏统计,上例可以看出,a有两⾏,所以分别得出了两⾏的和
axis=0 表⽰对列进⾏统计,上例可以看出,a有四列,所以分别得出了四列的和
再来看其他两个例⼦
print('求矩阵各⾏中的最⼩值:', np.min(a, axis=1))
print('求矩阵各列中的最⼩值:', np.min(a, axis=0))
求矩阵各⾏中的最⼩值: [0.4823868 0.61188049]
求矩阵各列中的最⼩值: [0.67792381 0.68852432 0.4823868 0.59230853]
print('求矩阵各⾏中的最⼤值:', np.max(a, axis=1))
print('求矩阵各列中的最⼤值:', np.max(a, axis=0))
求矩阵各⾏中的最⼤值: [0.87734668 0.74452105]
求矩阵各列中的最⼤值: [0.87734668 0.81386455 0.61188049 0.74452105]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论