提取 numpy 数组中的特定列
这是一个简单的问题,但假设我有一个 MxN 矩阵。我想做的就是提取特定列并将它们存储在另一个 numpy 数组中,但我收到无效的语法错误。 这是代码:
extractedData = data[[:,1],[:,9]].
看起来上面的行应该足够了,但我想还不够。我环顾四周,但找不到任何关于这个特定场景的语法。
This is an easy question but say I have an MxN matrix. All I want to do is extract specific columns and store them in another numpy array but I get invalid syntax errors.
Here is the code:
extractedData = data[[:,1],[:,9]].
It seems like the above line should suffice but I guess not. I looked around but couldn't find anything syntax wise regarding this specific scenario.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
我假设您想要列
1
和9
?要一次选择多列,请使用
要一次选择一列,请使用 使用
名称:
您可以从
data.dtype.names
... 获取名称I assume you wanted columns
1
and9
?To select multiple columns at once, use
To select one at a time, use
With names:
You can get the names from
data.dtype.names
…假设您想要使用该代码片段获取第 1 列和第 9 列,它应该是:
Assuming you want to get columns 1 and 9 with that code snippet, it should be:
如果您只想提取某些列:
如果您想排除特定列:
if you want to extract only some columns:
if you want to exclude specific columns:
只是:
列不需要按顺序排列:
Just:
The columns need not to be in order:
我想指出的一件事是,如果您要提取的列数为 1,则生成的矩阵不会是您可能期望的 Mx1 矩阵,而是一个包含以下元素的数组您提取的列。
要将其转换为矩阵,应在结果数组上使用reshape(M,1)方法。
One thing I would like to point out is, if the number of columns you want to extract is 1 the resulting matrix would not be a Mx1 Matrix as you might expect but instead an array containing the elements of the column you extracted.
To convert it to Matrix the reshape(M,1) method should be used on the resulting array.
使用这样的列表从 ND 数组中选择列时还应该注意一件事:
如果要删除维度(例如,仅选择一行),则生成的数组将是(出于某种原因)排列。所以:
One more thing you should pay attention to when selecting columns from N-D array using a list like this:
If you are removing a dimension (by selecting only one row, for example), the resulting array will be (for some reason) permuted. So:
您可以使用以下内容:
You can use the following:
这是另一个示例,当您需要数据中的特定列和范围时,有些人可能会觉得有用,这需要几秒钟才能在数百万行上运行,您可以通过添加其他列表来添加更多列(例如,columns = .. . + [1] + [5] 等:
Here is yet another example that some may find useful when you need specific columns and ranges from your data, this takes a few seconds to run on millions of rows and you can just add more columns by adding additional lists (e.g., columns = ... + [1] + [5], etc.:
我认为这里的解决方案不再适用于 python 版本的更新,使用新的 python 函数来实现它的一种方法是:
这会给你想要的结果。
您可以在这里找到文档: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_numpy.html#pandas.DataFrame.to_numpy
I think the solution here is not working with an update of the python version anymore, one way to do it with a new python function for it is:
which gives you the desired outcome.
The documentation you can find here: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_numpy.html#pandas.DataFrame.to_numpy
我无法编辑所选答案,因此我添加一个答案来澄清使用整数进行索引似乎返回视图(而不是副本),而使用列表返回副本
I could not edit the chosen answer so I'm adding an answer to clarify that using an integer to index seems to be returning a view (not a copy) while using a list returns a copy
您还可以使用 extractData=data([:,1],[:,9])
you can also use extractedData=data([:,1],[:,9])