import numpy as np
a = np.arange(0, 6).reshape(2, 3)
b = np.random.randint(1, 10, 6).reshape(2, 3)
print('数组a:', a, sep='\n')
print('数组b:', b, sep='\n')
# 1. 四则运算
# 1.1 加法: +,对应位置数字相加
c1 = a + b
print('数组a+b:', c1, sep='\n')
# 1.2 减法: -,对应位置数字相减
c2 = a - b
print('数组a-b:', c2, sep='\n')
# 1.3 乘法: *,对应位置数字相乘
c3 = a * b
print('数组a*b:', c3, sep='\n')
# 1.4 除法: /,对应位置数字相除
c4 = a / b
print('数组a/b:', c4, sep='\n')
修改已存在的数组,而不会创建新数组
修改已存在的数组需要注意:
原数组可能因为精度不够而无法储存修改后的新数组
print('a的内存位置: ', id(a))
a += b
print('+=', a, sep='\n')
print('a的内存位置: ', id(a))
a -= b
print('-=', a, sep='\n')
a *= b
print('*=', a, sep='\n')
原数组因为精度不够而无法储存修改后的新数组,导致报错,此时应该使用生成新数组的操作
结果与精度更高精度类型的数组保持一致
import numpy as np
a = np.arange(0, 6).reshape(2, 3)
b = np.random.randn(6).reshape(2, 3)
print('数组a:', a.dtype, a, sep='\n')
print('数组b:', b.dtype, b, sep='\n')
c = a+b
print('数组c:', c.dtype, c, sep='\n')
1. 函数功能:
给定维度的数组元素的和
2. 函数语法:
sum(a,axis,dtype,out,keepdims,initial)
a: 数组
axis: 可选参数,整数或整数组成的元组或None;执行求和操作的维度,
默认取值为None: 对数组的所有元素求和
取值为负值:表示从最后一个轴开始向最第一个轴计算
取值为整数: 计算对应轴元素的和
取值为元组: 同时计算对应轴的元素和
dtype: 可选参数,返回数组元素的数据类型,默认与数组a的数据类型相同
out: 可选参数,将输出结果保存在out指定数组所在的内存中
keepdims: 输出结果保持原数组的维度
initial: 求和结果的初始值
3. 返回值: 数组或标量
import numpy as np
a = np.arange(0, 24).reshape(2, 3, 4)
print('数组a:', a.dtype, a, sep='\n')
# 0. 取值为None
s0 = np.sum(a)
print('所有元素的和: ', s0)
s11 = np.sum(a, axis=-1)
print('数组a:axis=-1的和', s11, sep='\n')
s12 = np.sum(a, axis=(-1, -2))
print('数组a:axis=-1的和', s12, sep='\n')
s21 = np.sum(a, axis=0)
print('数组a:axis=0的和', s21, sep='\n')
s22 = np.sum(a, axis=1)
print('数组a:axis=1的和', s22, sep='\n')
s23 = np.sum(a, axis=2)
print('数组a:axis=2的和', s23, sep='\n')
# 4. dtype: 指定输出结果的数据类型
s4 = np.sum(a, dtype='float64')
print('指定类型的输出结果s4: ', s4)
# 5. keepdims: 输出结果保持原数组的维度
s51 = np.sum(a, dtype='float64', keepdims=True)
print('指定类型的输出结果s51: ', s51)
s52 = np.sum(a, axis=2, keepdims=True)
print('数组a:axis=2的和', s52, sep='\n')
# 6. initial: 求和结果的初始值
s6 = np.sum(a, dtype='float64', initial=1000)
print('输出结果加初始值1000的结果s6: ', s6)
注意:
1)out指定数组的形状要与运算结果的数组形状一致;
2)指定out可以节省内存,会用新的数组替换原来的数组,而不是生成新的数组
# out: 将输出结果保存在out指定的数组所在内存中
demo = np.zeros((3, 4))
print(id(demo))
demo1 = np.sum(a, axis=0)
print('数组a:axis=0的和', demo1, sep='\n')
demo2 = np.sum(a, axis=0, out=demo)
print('数组a:axis=0的和', demo2, sep='\n')
print(demo1)
print(id(demo1))
print(id(demo2))
d = np.ones((3,2))
print(d)
c5 = a@d
c6 = a.dot(d)
print('对数组a,b进行矩阵运算:', c5, sep='\n')
print('对数组a,b进行矩阵运算:', c6, sep='\n')
函数名称 | 函数 |
---|---|
sin(x) | 正弦函数 |
cos(x) | 余弦函数 |
exp(x) | 指数函数 |
sqrt(x) | 正数平方根 |
import numpy as np
x = np.arange(1, 5)
b1 = np.sin(x)
b2 = np.cos(x)
b3 = np.exp(x)
b4 = np.sqrt(x)
print('x: ', x)
print('sin(x): ', b1)
print('cos(x): ', b2)
print('exp(x): ', b3)
print('sqrt(x): ', b4)