python - 一维数组和二维数组之间的numpy元素明智乘法背后的逻辑
问题描述
我有两个数组 a 和 b,a 的形状为 (1000, ),b 的形状为 (1000, 1)
a = np.sin(x)
b = np.cos(x[:, np.newaxis])
任何人都可以向我解释为什么如果我进行元素明智乘法的原因
c = a * b
我知道 c 有形状 (1000, 1000)?非常感谢您的帮助。
解决方案
numpy 有广播的概念。这意味着如果一个轴形状为1,那么它可以匹配另一个不同大小的数组,并且那个轴的元素将被广播到另一个数组的所有元素。
当你这样做时会发生什么:
x = np.zeros((1,))
y = np.zeros((100,))
x+y
现在,还有自动广播的概念。这意味着 的形状(n,)
也可以理解为(1,n)
。
所以现在在你的情况下,你有这个自动广播a
发生,这意味着你将 size 乘以 size (1,1000)
,(1000,1)
它们都是通过第一个广播规则广播的,因此给出了 size 的结果(1000,1000)
。
推荐阅读
- python - 在 GraphQL 中过滤嵌入式文档列表
- pine-script - 值如何传入?:条件三元运算符切换
- python - 不能让 id 在 Python 中工作!Kivy 新手需要帮助
- java - 已部署的 .war 生成错误:模板可能不存在或可能无法访问
- python - Python Coinbase Pro API 类函数参数不起作用
- javascript - React Router 中的过滤器功能问题
- azure-functions - 将创建的 excel 文件保存到 azure blob 容器。路径问题
- css - CSS - 页面第一类元素的不同样式
- embedded - STM32 引导加载程序
- r - 如何通过R中的不同排列找到总频率?