Bra*_*avo 3 python arrays numpy
假设我有一个矩阵 B:
B = [
[0, 1, 2],
[2, 3, 4],
[5, 6, 7]
]
Run Code Online (Sandbox Code Playgroud)
和向量 a:
a = [0,0,1,1,2]
Run Code Online (Sandbox Code Playgroud)
我需要定义一个新的向量 C 以便它按照 a 的指定重复 B 中的行,即,
C = [
[0, 1, 2],
[0, 1, 2],
[2, 3, 4]
[2, 3, 4],
[5, 6, 7]
]
Run Code Online (Sandbox Code Playgroud)
在 Python 中是否有一个技巧命令可以做到这一点?
您可以在此处a用作索引数组。
>>> import numpy as np
>>> b = np.array([
[0, 1, 2],
[2, 3, 4],
[5, 6, 7]
])
>>> a = [0,0,1,1,2]
>>> b[a]
array([[0, 1, 2],
[0, 1, 2],
[2, 3, 4],
[2, 3, 4],
[5, 6, 7]])
Run Code Online (Sandbox Code Playgroud)
从文档中:
对于索引数组的所有情况,返回的是原始数据的副本,而不是切片的视图。
在纯 Python 中,您可以使用列表推导式:
>>> B = [
[0, 1, 2],
[2, 3, 4],
[5, 6, 7]
]
>>> [B[x][:] for x in a]
[[0, 1, 2], [0, 1, 2], [2, 3, 4], [2, 3, 4], [5, 6, 7]]
Run Code Online (Sandbox Code Playgroud)
请注意,[:]返回列表的浅表副本,如果列表包含可变对象,则您必须使用它copy.deepcopy来获取全新的副本。
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |