我想对矩阵的每 n 列求和。如何在不使用 for 循环的情况下以简单的方式做到这一点?这就是我现在所拥有的:
n = 3 #size of a block we need to sum over
total = 4 #total required sums
ncols = n*total
nrows = 10
x = np.array([np.arange(ncols)]*nrows)
result = np.empty((total,nrows))
for i in range(total):
result[:,i] = np.sum(x[:,n*i:n*(i+1)],axis=1)
Run Code Online (Sandbox Code Playgroud)
结果将是
array([[ 3., 12., 21., 30.],
[ 3., 12., 21., 30.],
...
[ 3., 12., 21., 30.]])
Run Code Online (Sandbox Code Playgroud)
如何矢量化此操作?
如果我有takeWhile (<15) [1,3..]这个如何终止?Haskell如何知道列表末尾没有隐藏2个?
一个更好的例子可能是一个sin函数,其中我们的伤口具有无限多的相似值,在15以下将永远重复.
Python 3.3:
从列表中获取最简单的方法是什么:
input = ["A", 112, "apple", 74, 112]
Run Code Online (Sandbox Code Playgroud)
以下列表:
output = [0, 1, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud)
也就是说,分配从0开始自动递增的id到每个唯一条目,并将原始列表转换为此id的列表.
我知道,我可以获得便宜的课程数量
number_of_classes = len(set(input))
Run Code Online (Sandbox Code Playgroud)
但是如何创建正确有序的输出?
我有 3 个向量,如下所示:
a = np.ones(20)
b = np.zeros(20)
c = np.ones(20)
Run Code Online (Sandbox Code Playgroud)
我试图将它们组合成一个尺寸为 20x3 的矩阵。
目前我正在做:
n1 = np.vstack((a,b))
n2 = np.vstack((n1,c)).T
Run Code Online (Sandbox Code Playgroud)
这有效,但没有办法以列方式用数组填充矩阵吗?
当我打电话时:
np.fromstring('3 3 3 0', sep=' ')
Run Code Online (Sandbox Code Playgroud)
它返回
array([ 3., 3., 3., 0.])
Run Code Online (Sandbox Code Playgroud)
由于默认为,sep=''我希望以下调用返回相同的结果:
np.fromstring('3330')
Run Code Online (Sandbox Code Playgroud)
但是它引起了
ValueError: string size must be a multiple of element size
Run Code Online (Sandbox Code Playgroud)
为什么是这样?什么是得到的最Python的方式array([ 3., 3., 3., 0.])从'3330'?
我有代表DNA序列及其补体的字符串,我正在搜索它们的反向回文.
切片
seq1[i:z]
Run Code Online (Sandbox Code Playgroud)
效果很好,但是
seq2[i:z:-1]
Run Code Online (Sandbox Code Playgroud)
什么都不打印,什么都不返
此外,seq[i:z][::-1]在所有情况下都可以正常工作,但这对于字符串切片是否正常?
你如何将数字123456789分成[1,2,3,4,5,6,7,8,9]使用Python?
假设我有两个列表:full_links &href_links
我想删除href_links包含重复值的值full_links
例如:
full_links = [ 1,2,3,4,5]
href_links = [ 1,2,7,8,9,3]
Run Code Online (Sandbox Code Playgroud)
所以,输出应该是:
comb_list = [7,8,9]
Run Code Online (Sandbox Code Playgroud)
我的代码是:
comb_list = list(set(full_links) - set(href_links))
Run Code Online (Sandbox Code Playgroud)
但它没有用.
我需要找到列中具有最大列总和的所有元素的最小值.我做了以下事情:
创建随机矩阵
from numpy import *
a = random.rand(5,4)
Run Code Online (Sandbox Code Playgroud)
然后计算每列的总和并找到最大元素的索引
c = a.sum(axis=0)
d = argmax(c)
Run Code Online (Sandbox Code Playgroud)
然后我尝试在这一列中找到最小数字,但我的语法非常糟糕,我知道如何在当前索引的行中找到最小元素.
e = min(a[d])
Run Code Online (Sandbox Code Playgroud)
但是如何更改列?
我有一本字典
type_dict = {3: 'foo', 4: 'bar',5: 'foobar', 6: 'foobarbar'}
Run Code Online (Sandbox Code Playgroud)
和一个包含以下列的DataFrame:
>>> df.type
0 3
1 4
2 5
3 6
4 3
5 4
6 5
7 6
8 3
Run Code Online (Sandbox Code Playgroud)
我想创建一个包含相应type_dict值的新列,但以下是我唯一可以提出并且无法正常工作的内容:
>>> type_dict[df.type]
TypeError: 'Series' objects are mutable, thus they cannot be hashed
>>> type_dict[df.type.values]
TypeError: unhashable type: 'numpy.ndarray'
Run Code Online (Sandbox Code Playgroud)
我真的需要apply并遍历每一行,还是有更有效的替代方案?
python ×9
numpy ×4
list ×3
matrix ×3
python-3.x ×2
string ×2
dataframe ×1
dictionary ×1
haskell ×1
minimum ×1
pandas ×1
python-2.7 ×1
slice ×1
split ×1
sum ×1