我需要将函数存储在字典中,每个函数都取决于它的键,比方说,关键字1是关联的lambda函数lambda s: s * A[1].我尝试使用dict理解,但似乎内联函数结束时定义了循环的最后一个值.
d = {k, lambda s: s * A[k] for k in range(n)} # e.g. n = 4
Run Code Online (Sandbox Code Playgroud)
之后,所有创建的lambda函数都用A[3]而不是A[0], A[1], A[2]和声明A[3].这段代码出了什么问题?
我需要存储数组的大小n与值cos(x)和sin(x),可以说,
array[[cos(0.9), sin(0.9)],
[cos(0.35),sin(0.35)],
...]
Run Code Online (Sandbox Code Playgroud)
每对cos和sin的论证都是随机选择的.我的代码就我一直在改进它是这样的:
def randvector():
""" Generates random direction for n junctions in the unitary circle """
x = np.empty([n,2])
theta = 2 * np.pi * np.random.random_sample((n))
x[:,0] = np.cos(theta)
x[:,1] = np.sin(theta)
return x
Run Code Online (Sandbox Code Playgroud)
是否有更短的方式或更有效的方法来实现这一目标?
我有一个n行数组A,其中n行为3行.每行由三个整数组成,每个整数都是一个整数,它引用numpy数组中的另一个位置.例如,如果我想要N[4]引用的行,我使用N[N[4]].视觉:
N = np.array([[2, 3, 6], [12, 6, 9], [3, 10, 7], [8, 5, 6], [3, 1, 0] ... ])
N[4] = [3, 1 ,0]
N[N[4]] = [[8, 5, 6]
[12, 6, 9]
[2, 3, 6]]
Run Code Online (Sandbox Code Playgroud)
我正在构建一个修改N的函数,我需要为某些指定的x修改N [N [x]],这也是一个参数(例子中为4).我想将子流中的所有6更改为另一个数字(假设为0),所以我使用numpy.where来查找索引,这是
where_is_6 = np.where(N[N[4]] == 6)
Run Code Online (Sandbox Code Playgroud)
现在,如果我直接替换,就像N[N[4]][where_is_6] = 0没有变化.如果我像以前一样引用var = N[N[4]],那么var[where_is_6]更改已在函数本地完成,并且N不会全局更改.在这种情况下我该怎么办?或者我做错了什么?
我有一个用零填充的NxM numpy数组和一个大小为N的1D numpy数组,大小在0到M-1之间。如您所见,数组的维数与矩阵中的行数匹配。整数数组中的每个元素意味着必须将其对应行中给定位置的位置设置为1。例如:
# The matrix to be modified
a = np.zeros((2,10))
# Indices array of size N
indices = np.array([1,4])
# Indexing, the result must be
a = a[at indices per row]
print a
[[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)
我尝试使用索引,a[:,indices]但是这为每一行设置了相同的索引,最终这为所有行设置了索引。如何将给定索引设置为每行 1 个?
我在这里看到了一些非常相关的问题,但他们的回答对我不起作用。我有一个列表列表,其中一些子列表是重复的,但它们的元素可能是无序的。例如
g = [[1, 2, 3], [3, 2, 1], [1, 3, 2], [9, 0, 1], [4, 3, 2]]
根据我的问题,输出应该是:
g = [[1,2,3],[9,0,1],[4,3,2]]
我已经尝试过,set但只删除了那些相等的列表(我认为它应该可以工作,因为集合的定义是没有顺序的)。我访问过的其他问题只有列表完全重复或重复的示例,如下所示:Python:如何删除列表列表中的重复列表?. 现在输出顺序(对于列表和子列表)不是问题。
我有一个数组对(数组为2的子数组)的数组,如下所示:
pairs = np.array([[1, 2],[5, 12],[9, 33],[9, 1],[34,7]])
Run Code Online (Sandbox Code Playgroud)
和peers数组,像这样:
nums = np.array([1,12,9])
Run Code Online (Sandbox Code Playgroud)
我想要做的是恢复num数组中包含的数字的对等体.结果应该是
result = np.array([2, 5, 33, 9, 1])
Run Code Online (Sandbox Code Playgroud)
如何使用numpy函数实现这一目标?我现在使用的是懒惰比较(实际上使用列表),对于nums数组中的每个元素,我检查它是否包含在任何子数组中并存储值.
我有一个函数,A其输入是一个numpy向量(numpy.ndarray)调用x.此函数为每个元素计算x该元素本身与x这些元素列表给定的其他元素之和的总和.
以下示例应该更好地说明这一点:
x = [[2,3], [3,4], [1,2], [1,3], [1,4]] # my input
n = [[1,2,3], [0,4,2], [3,0,1], [0,1,4], [3,1,2]] # list with lists of element to be added for each element in x
Run Code Online (Sandbox Code Playgroud)
因此,对于x的第一个元素,即x [0] = [2,3],我必须添加由n [0]给出的值,因此它们是1,2和3.我通过得到它们x[n[0][0]],x[n[0][1]] and x[n[0][2]].
该示例的预期输出应为:
l = [[11, 18], [13, 21], [9, 16], [9, 20], [8, 21]]
Run Code Online (Sandbox Code Playgroud)
元素x [i]的最终总和应该是
(x[i] + x[n[i][0]] + x[i] + x[n[i][1]] + x[i] + x[n[i][2]])
Run Code Online (Sandbox Code Playgroud)
函数的返回是每个计算总和的列表.
由于这是迭代的,我遍历列表x和n.以下代码实现了这一点,但在列表x和n中逐个元素.
def A(x): …Run Code Online (Sandbox Code Playgroud)