我有一个从.csv文件读取的Numpy数据的2D数组。每行代表一个数据点,最后一列包含一个“键”,该键与另一个Numpy数组(即“查找表”)中的“键”唯一对应。
将第一个表中的行与第二个表中的值进行匹配的最佳(最Numpythonic)方法是什么?
一些示例数据:
import numpy as np
lookup = np.array([[ 1. , 3.14 , 4.14 ],
[ 2. , 2.71818, 3.7 ],
[ 3. , 42. , 43. ]])
a = np.array([[ 1, 11],
[ 1, 12],
[ 2, 21],
[ 3, 31]])
在查找表中建立一个从键到行号的字典:
mapping = dict(zip(lookup[:,0], range(len(lookup))))
然后,您可以使用字典来匹配行。例如,如果您只想加入表:
>>> np.hstack((a, np.array([lookup[mapping[key],1:]
for key in a[:,0]])))
array([[ 1. , 11. , 3.14 , 4.14 ],
[ 1. , 12. , 3.14 , 4.14 ],
[ 2. , 21. , 2.71818, 3.7 ],
[ 3. , 31. , 42. , 43. ]])
Numpy 中包含了一些函数用于处理数组,本节重点介绍如下几类: 修改数组形状; 翻转数组; 格式转换。 1. 修改数组形状 常用的修改数组形状的函数有: 函数 说明 reshape 不改变数据的条件下修改形状 flat 数组元素迭代器 flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组 ravel 返回展开数组 1.1 reshape numpy.reshape 函数可以在不改变
问题内容: 我有以下数组 我想找到连续为零的数组的开始和结束索引,输出上方的数组如下所示 我想做得尽可能高效。 问题答案: 这是一个相当紧凑的矢量化实现。我已经更改了一些要求,所以返回值有点“ numpythonic”:它创建一个形状为(m,2)的数组,其中m是零的“游程”数。第一列是每次运行中前0个的索引,第二列是运行后第一个非零元素的索引。(例如,此索引模式匹配切片的工作方式以及函数的工作方式
我正在用python实现kmeans算法。我正在测试初始化质心的新方法,并希望实现它,看看它会对集群产生什么影响。 我的想法是从我的数据集中选择数据点,使质心初始化为数据的边缘点。 简单示例2属性示例: 假设这是我的输入数组 我想从这个数组中选择[3,3][3,-3][3,3][3,-3]的边点。所以如果我的k是4,这些点会被选中 在我工作的数据有4和9个属性和大约300个数据点在我的数据集中 注
问题内容: 是否有numpy-thonic方法(例如函数)在数组中查找最接近的值? 例: 问题答案:
问题内容: 我有两个numpy数组: 我想从p_rem中的p_a_colors中删除所有列,所以我得到: 我认为,某些事情应该像 但我只是不知道轴或[:]正确。 我知道 可以,但是我试图避免(python)循环,因为我也想要正确的性能。 问题答案: 这就是我要做的: 您需要执行void dtype事情,以便numpy整体比较行。之后,使用内置的set例程似乎是显而易见的方法。
问题内容: 我有一个形状为(x,y)的2d数组,我想将其转换为形状为(x,y,1)的3d数组。有没有很好的Pythonic方式可以做到这一点? 问题答案: 除了其他答案,您还可以将切片与结合使用: 甚至这个(可以在任意数量的尺寸下使用):
问题内容: 如何检查numpy数组是否为空? 我使用了以下代码,但是如果数组包含零,则此操作将失败。 这是解决方案吗? 问题答案: 您可以随时查看属性。它定义为一个整数,并且在数组中没有元素时为零():
问题内容: 我想获取与行匹配的二维Numpy数组的索引。例如,我的数组是这样的: 我想获取与行[0,1]相匹配的索引,该行是索引3和15。当我执行类似的操作时,… 我想要索引数组([3,15])。 问题答案: 您需要使用函数来获取索引: 或者,如文档所述: 如果仅给出条件,则返回 您可以直接调用返回的数组: 分解: 并在该数组上调用方法(使用)可为您提供两个均为True的位置: 并获取哪些索引是: