给定3乘3的numpy数组
a = numpy.arange(0,27,3).reshape(3,3)
# array([[ 0, 3, 6],
# [ 9, 12, 15],
# [18, 21, 24]])
为了规范二维数组的行,我想到了
row_sums = a.sum(axis=1) # array([ 9, 36, 63])
new_matrix = numpy.zeros((3,3))
for i, (row, row_sum) in enumerate(zip(a, row_sums)):
new_matrix[i,:] = row / row_sum
必须有更好的方法,不是吗?
可能需要澄清:通过标准化我的意思是,每行条目的总和必须为1。但是我认为这对于大多数人来说都是显而易见的。
广播确实对此有好处:
row_sums = a.sum(axis=1)
new_matrix = a / row_sums[:, numpy.newaxis]
row_sums[:, numpy.newaxis]
重塑row_sums从存在(3,)
到存在(3, 1)
。当你这样做a / b
,a
并b
会相互播出。
您可以
在此处
了解更多有关 广播的
信息
,甚至可以
在此处
了解更多。
问题内容: 我想定义一个没有初始化长度的二维数组,如下所示: 但这不起作用… 我已经尝试过下面的代码,但是它也是错误的: 错误: 我怎么办呢? 问题答案: 从技术上讲,你正在尝试索引未初始化的数组。你必须先使用列表初始化外部列表,然后再添加项目。Python将其称为“列表理解”。 你现在可以将项目添加到列表中: 请注意,矩阵是地址主地址,换句话说,“ y索引”位于“ x索引”之前。 尽管你可以根据
问题内容: 我开始使用python,并尝试使用一个二维列表,最初我在每个地方都填充了相同的变量。我想出了这个: 它提供了所需的结果,但感觉像是一种解决方法。有没有更简单/更短/更优雅的方式来做到这一点? 问题答案: Python中经常出现的一种模式是 这有助于激励列表理解的引入,从而将代码段转换为 它更短,有时更清晰。通常,你养成识别这些习惯的习惯,并经常用理解代替循环。 你的代码两次遵循此模式
问题内容: 如何使用PyTables将numpy多维数组放入HDF5文件中? 据我所知,我不能将数组字段放在pytables表中。 我还需要存储有关此数组的一些信息,并能够对其进行数学计算。 有什么建议? 问题答案: 可能有一种更简单的方法,但是据我所知,这就是您要做的事情: 如果要指定要使用的压缩,请查看。例如 可能有很多更简单的方法……很长一段时间以来,我除了表型数据外没有用过其他任何东西。
本文向大家介绍Python numpy多维数组实现原理详解,包括了Python numpy多维数组实现原理详解的使用技巧和注意事项,需要的朋友参考一下 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。今天就针对多维数组展开来写博客numpy其一部分功能如下: 1.ndarray,是具有矢量
问题内容: 在一个程序中,我正在写一个旋转二维数组的需求。在寻找最佳解决方案时,我发现了这种令人印象深刻的一线功能: 我现在在程序中使用它,它按预期工作。我的问题是,我不了解它是如何工作的。 如果有人可以解释所涉及的不同功能如何实现所需的结果,我将不胜感激。 问题答案: 考虑以下二维列表: 让我们将其逐步分解: 此列表传递给使用参数unpacking,因此调用最终等效于此: 希望注释能够清楚说明其
问题内容: 例如我有2个数组 我怎么能 和这样我得到 ? 问题答案: 您可以使用dstack: 如果必须有元组: 对于Python 3+,您需要扩展iterator对象。请注意,这是非常低效的: