我正在使用Python 2.7的Jupyter笔记本.像这样导入matplotlib:
%matplotlib inline
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
但我发现了一件事.当我在Spyder中使用Python时,我总是必须在python脚本的末尾使用`plt.show()命令来查看这些图.
在Jupyter中,我不需要这个命令来查看情节.我收到此错误消息:
[<matplotlib.lines.Line2D at 0x91615d0>]
Run Code Online (Sandbox Code Playgroud)
但它仍然是一个阴谋.这是为什么?
以下线程中的答案对我没有帮助,因为我有多维数组Passing memoryview to C function。
我有以下测试代码:
头文件:
//cm.h
double per(double **marr,int rows,int cols);
Run Code Online (Sandbox Code Playgroud)
带有 C 函数的文件
//cm.c
#include <stdio.h>
double per(double **marr,int rows,int cols){
int i,j;
for (i=0;i<rows;i++){
for (j=0;j<cols;j++){
//Just update the array
marr[i][j] = (double)(i+1)*(j+1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Cython 文件:
#m.pyz
import numpy as np
cimport numpy as np
from cython.view cimport array as cvarray
cdef extern from 'cm.h':
double per(double **marr,int rows,int cols);
def test(double[:,::1] x):
cdef int rows = x.shape[0]
cdef int cols = …Run Code Online (Sandbox Code Playgroud) 我有这个玩具示例,它捕获了我真正的问题:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': ['car there is','car not working', 'bus there is']})
df.iloc[1] = np.nan
idx = df['A'].str.contains('car')
df['IsCar'] = 0
df.loc[idx,'IsCar'] = 1
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此代码时,收到以下错误消息:
ValueError: cannot index with vector containing NA / NaN values
Run Code Online (Sandbox Code Playgroud)
为什么我不能这样做。有没有修复我不必用其他东西替换 NaN 的情况?
以下是我的代码(仅模拟数字):
import pandas as pd
d = {'x' : [1,4,6,9],
'y' : [1,4,6,8]}
df = pd.DataFrame(d)
ct = pd.concat([df.x,
pd.cut(df.y, bins=2)], axis=1)
gp = ct.groupby('x').y.value_counts().unstack().fillna(0)
print(gp)
print(gp[gp.columns[0]])
gp[gp.columns[0]] = gp[gp.columns[0]]/10
Run Code Online (Sandbox Code Playgroud)
print(gp) 得到:
y (0.993, 4.5] (4.5, 8.0]
x
1 1.0 0.0
4 1.0 0.0
6 0.0 1.0
9 0.0 1.0
Run Code Online (Sandbox Code Playgroud)
print(gp[gp.columns[0]]) 给出这个:
x
1 1.0
4 1.0
6 0.0
9 0.0
Name: (0.993, 4.5], dtype: float64
Run Code Online (Sandbox Code Playgroud)
但是以下行:
gp[gp.columns[0]] = gp[gp.columns[0]]/10
Run Code Online (Sandbox Code Playgroud)
抛出此错误:
ValueError: Buffer has wrong number of dimensions (expected 1, …Run Code Online (Sandbox Code Playgroud) 我经常使用Excel表格.它使得在一个工作表中拥有多个表成为可能.但是我在VBA遇到了一个我不知道如何解决的问题.
我们假设我的电子表格中有一个名为"tbl"的表.它包含以下数据:
id value
1 1000
1 2000
2 3000
2 4000
Run Code Online (Sandbox Code Playgroud)
我有以下代码可行:
Sub test()
Dim rng As Range
Dim arr() As Variant
Set rng = ActiveSheet.ListObjects("tbl").DataBodyRange
arr = rng.Value
End Sub
Run Code Online (Sandbox Code Playgroud)
这段代码将把整个表放入arr.但有些情况下我只想要表中的某些行.让我们说我想要第4行和第5行,即:
2 3000
2 4000
Run Code Online (Sandbox Code Playgroud)
以下代码将解决这个问题:
arr = Range("A4:B5")
Run Code Online (Sandbox Code Playgroud)
但有些情况下,我的电子表格中有很多位于不同位置的表格.因此,我需要找出表中第一个单元格所在的位置(左上角).如果它位于K1,我需要同时获得列和行(K和1).
是否有捷径可寻?
python ×3
pandas ×2
cython ×1
dataframe ×1
excel ×1
jupyter ×1
matplotlib ×1
typed ×1
valueerror ×1
vba ×1