Scipy Lecture Notes(一)

卞经业
2023-12-01
由于某些科学计算及应用的高级命题的需要,对Scipy Lecture Notes
展开学习。


IPython的内置变量查询提供了如同Redis的 * 运算。
在IPython中使用%matplotlib后,在利用matplotlib 进行画图时在显示图片时,
不需要使用plt.show()命令。


非同形数组相加,创造矩阵的例子:
np.arange(6) + np.arange(0, 51, 10)[:, np.newaxis]
这里可以将数组的相加降到同一维度理解。


np.tile可以进行数组复制平铺。
也可以思考一下其实现,先生成rep参数相应的np.ones
用其作为克罗内克乘积(np.kron)的左面参数,A作为右面参数即得到复制结果。


np.may_share_memory(A, B): 检查AB是否共享内存,可以检查数组的拷贝情况,
.copy方法可实现拷贝。


%timeit 可以测试程序花费的时间。


曾经提出的bool ndarray间的并集,交集运算是通过 + * 完成的,ndarray中自然地有
相应的内置接口np.logical_or np.logical_and
但在形式表达的简易性上,推荐使用 + *
并在之后的有关逻辑运算上,复合使用 + *
这里要说明一点,对Python bool 类型进行上述运算时,会强制转换为整型,虽然不影响比较
结果,相对应的bool 型 ndarray 保持类型不变,这种“好处”应该并不来自于额外的条件设定,
而是ndarray在数组间运算保留了类型(dtype)不变,


下面姑且当一次白学家:
但这是否能认为ndarray的操作符重载是封闭的?
首先值得注意的一点是,ndarray一旦实例化,对其元素进行修改(如赋值),
都会进行相对于dtype的类型转换。即使在使用np.array进行初始化时,表现地也很明显,
如当使用True 与 "kill" 进行初始化时 True被转化为 "True",
这是因为Python内部的类型转化机制,但储存不同类型的ndarray也是可以实例化的,
如自定义一个类,并与一个Python内置类型一起初始化一个ndarray,是可以做的。


更为一般地,想要强制性地取消ndarray生成时的内部变量类型转换也是可以的,
这可以从ndarray对于自定义类型及内置类型生成ndarray出的dtype得到启发,
注意到此时的dtype为object,即一般的Python基类,所以在初始化时指定 dtype = object
即可完成。


下面再看ndarray的操作符重载是否封闭,
通过在具有不同类型的ndarray间的运算试验,可以看到,对于内置类型,是可以在两个具有
不同类型(dtype)的ndarray间进行运算,运算的结果 element by element, 并依此进行
element转型,并最终决定结果。
故在进行运算时,仅需要保证运算在element层面上保持即可。


np.triu: 返回上三角矩阵(包含主对角元素),除了矩阵作为第一个参数外,第二个参数可以
指定三角矩阵的移位,向上移位位数。(下三角考虑转置)


IPython 可以使用!执行命令行命令。











 类似资料: