我有一个像这样的2 numpy数组
a = [array([ 0.1, 0.1, 0.1]), array([ 0.2, 0.2, 0.2])]
b = [0 0 0 1]
我想要的是这样的东西 -
c = [[0.1, 0.1, 0.1],[0.1, 0.1, 0.1],[0.1, 0.1, 0.1],[0.2, 0.2, 0.2]]
即。基于b的索引的元素。
有没有办法可以使用numpy和vectorization实现这一点,即不循环使用值?
答案 0 :(得分:1)
如果将type
存储为二维numpy数组:
const v1: { type: "S"; payload: string } = { type: "S", payload: "test" };
const v2: { type: "N"; payload: number } = { type: "N", payload: 123 };
interface ActionMap {
S: typeof v1;
N: typeof v2;
}
type Actions = ActionMap[keyof ActionMap];
const findByTypeWorks = <T extends keyof ActionMap>(type: T) => (
action: Actions
): action is ActionMap[T] => action.type === type;
const filterWithJustType = [v1, v2].filter(findByTypeWorks("S"));
console.log(filterWithJustType[0].payload.trim());
甚至通过a
将>>> a = np.array([[0.1, 0.1, 0.1], [0.2, 0.2, 0.2]])
# result: array([[ 0.1, 0.1, 0.1],
# [ 0.2, 0.2, 0.2]])
转换为numpy数组,
然后你可以使用列表b来根据需要访问元素:
a
如果您需要a = np.array(a)
作为输出,请使用>>> b = [0,0,0,1]
>>> print(a[b])
array([[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1],
[ 0.1, 0.1, 0.1],
[ 0.2, 0.2, 0.2]])
数组的list
方法:
tolist()
答案 1 :(得分:0)
列表理解
[a[x].tolist() for x in b]
答案 2 :(得分:0)
this.navCtrl.push("DashboardPage")
备选方案1 :
this.navCtrl.push(DashboardPage)
输出:
import numpy
a = [numpy.array([ 0.1, 0.1, 0.1]), numpy.array([ 0.2, 0.2, 0.2])]
b = [0, 0, 0, 1]
备选方案2 :
print([a[x].tolist() for x in b])
输出:
[[0.1, 0.1, 0.1], [0.1, 0.1, 0.1], [0.1, 0.1, 0.1], [0.2, 0.2, 0.2]]
备选方案3 :
print(numpy.array(a)[b])
输出:
[[ 0.1 0.1 0.1]
[ 0.1 0.1 0.1]
[ 0.1 0.1 0.1]
[ 0.2 0.2 0.2]]
备选方案4 :
print(list(map(lambda i: a[i], b)))
输出:
[array([ 0.1, 0.1, 0.1]), array([ 0.1, 0.1, 0.1]), array([ 0.1, 0.1, 0.1]), array([ 0.2, 0.2, 0.2])]
答案 3 :(得分:0)
使用numpy
如果你想使用numpy:
print([a[i].tolist() for i in b])
不使用numpy:
import numpy as np
a = np.array([[0.1, 0.1, 0.1], [0.2, 0.2, 0.2]])
b = [0,0,0,1]
print([value_1.tolist() for value in b for index,value_1 in enumerate(a) if index==value])
以上列表理解与:
相同final=[]
for value in b:
for index,value_1 in enumerate(a):
if index==value:
final.append(value_1.tolist())
print(final)
输出:
[[0.1, 0.1, 0.1], [0.1, 0.1, 0.1], [0.1, 0.1, 0.1], [0.2, 0.2, 0.2]]