Python 是否执行列号为操作数之一的操作?
假设我有(5,5)个数组。 如何使列号为操作数之一f.e.如果数组均为0,则如果我这样做:Python 是否执行列号为操作数之一的操作?,python,numpy,Python,Numpy,假设我有(5,5)个数组。 如何使列号为操作数之一f.e.如果数组均为0,则如果我这样做: a + Col-num? 然后结果的第一列将是全部1,第二列全部2,…3,4,全部5 那么第二个重影操作数就是列号?你是说这个 arr = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] columnAdded = [[x+i for i,x in enumerate(row)] for row in arr] 或者使用nu
a + Col-num?
然后结果的第一列将是全部1,第二列全部2,…3,4,全部5
那么第二个重影操作数就是列号?你是说这个
arr = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]
columnAdded = [[x+i for i,x in enumerate(row)] for row in arr]
或者使用numpy:
import numpy as np
arr = np.array([[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]])
print(arr+np.arange(1,1+len(arr[0])))
你是说这个
arr = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]
columnAdded = [[x+i for i,x in enumerate(row)] for row in arr]
或者使用numpy:
import numpy as np
arr = np.array([[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]])
print(arr+np.arange(1,1+len(arr[0])))
我认为这比公布的答案要快一点:
def f(c):
col, arr = c
return arr + (col + 1)
a = np.zeros((5, 5))
columnAdded = np.apply_along_axis(f, 1, enumerate(a.T)).T
columnAdded
>>> array([[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.]])
按照要求以
numpy
的方式完成我认为这将比发布的答案快一点:
def f(c):
col, arr = c
return arr + (col + 1)
a = np.zeros((5, 5))
columnAdded = np.apply_along_axis(f, 1, enumerate(a.T)).T
columnAdded
>>> array([[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.]])
a+(np.arange(a.shape[1])+1)
按要求以numpy
方式完成
a+(np.arange(a.shape[1])+1)
输出:
a = np.zeros((4,4))
a+(np.arange(a.shape[1])+1)
array([[1., 2., 3., 4.],
[1., 2., 3., 4.],
[1., 2., 3., 4.],
[1., 2., 3., 4.]])
输出:
a = np.zeros((4,4))
a+(np.arange(a.shape[1])+1)
array([[1., 2., 3., 4.],
[1., 2., 3., 4.],
[1., 2., 3., 4.],
[1., 2., 3., 4.]])
你可以转置和枚举你可以转置和枚举是的,但是用一种简单的方式;)给你!:)是的,但以一种朴素的方式;)给你!:)<代码>沿应用不是速度工具。你可以自己测试。
apply_-along
不是一个快速工具。你可以自己测试一下。