我想在一个NumPy
数组中插入多个行和列。
如果我有一个长度为n_a
的正方形数组,例如:n_a = 3
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
我想得到一个大小为n_b
的新数组,它包含有索引的某些行和列上的a
和zeros
(或任何其他1D
长度为n_b
的数组,例如
index = [1, 3]
所以n_b = n_a + len(index)
。那么新数组是:
b = np.array([[1, 0, 2, 0, 3],
[0, 0, 0, 0, 0],
[4, 0, 5, 0, 6],
[0, 0, 0, 0, 0],
[7, 0, 8, 0, 9]])
我的问题是,在假设大数组n_a
比len(index)
大得多的情况下,如何有效地做到这一点。
编辑
结果:
import numpy as np
import random
n_a = 5000
n_index = 100
a=np.random.rand(n_a, n_a)
index = random.sample(range(n_a), n_index)
沃伦·韦克瑟解:0.208s
wim解决方案:0.980 s
Ashwini Chaudhary的解决方案:0.955秒
谢谢大家!
这里有一种方法。它与@wim的答案有一些重叠,但它使用索引广播将
a
用一个赋值复制到b
。因为花式索引返回的是副本而不是视图, 我只能在两步的过程中思考如何去做。也许一个裸体巫师知道更好的方法。。。
给你:
您可以通过对
a
应用两个numpy.insert
调用来完成此操作:相关问题 更多 >
编程相关推荐