小编FaC*_*fee的帖子

在Python中:如何将稀疏矩阵写入csv文件?

我是 Python 新手。我得到了一个脚本,它生成随机数并将它们放入 126x81 稀疏矩阵中。我想生成一个 csv 文件:Cell_ID细胞_X细胞_Y瓦尔。单元格 X 和 Y 当然是每个单元格的坐标。我的脚本有一个循环,它生成一个“outputs.csv”文件,但其中的数据没有按照我想要的方式显示(每行的开头/结尾有方括号,并且有省略号 [... ] 代替某些值)。总而言之,我无法阅读矩阵的全部内容。

如果可以的话,我会上传一张图片,向您展示我希望这些数据在记事本或 Excel 中读取时的样子,但我不被允许这样做。然而,这些数据应该看起来像一个典型的 csv 文件,每个值都在其列下对齐。谢谢你们的帮助!:)

python csv excel matplotlib matrix

4
推荐指数
1
解决办法
7802
查看次数

Python:在matplotlib图表外显示一行文本

我有matplotlib库生成的矩阵图.我的矩阵的大小是256x256,我已经有一个图例和一个带有正确刻度的颜色条.由于我是stackoverflow的新手,我无法附加任何图像.无论如何,我使用此代码生成图:

# Plotting - Showing interpolation of randomization
plt.imshow(M[-257:,-257:].T, origin='lower',interpolation='nearest',cmap='Blues', norm=mc.Normalize(vmin=0,vmax=M.max()))
title_string=('fBm: Inverse FFT on Spectral Synthesis')
subtitle_string=('Lattice size: 256x256 | H=0.8 | dim(f)=1.2 | Ref: Saupe, 1988 | Event: 50 mm/h, 15 min')
plt.suptitle(title_string, y=0.99, fontsize=17)
plt.title(subtitle_string, fontsize=9)
plt.show()

# Makes a custom list of tick mark intervals for color bar (assumes minimum is always zero)
numberOfTicks = 5
ticksListIncrement = M.max()/(numberOfTicks)
ticksList = []
for i in range((numberOfTicks+1)):
    ticksList.append(ticksListIncrement * i) 

cb=plt.colorbar(orientation='horizontal', format='%0.2f', ticks=ticksList) 
cb.set_label('Water depth [m]') 
plt.show() …
Run Code Online (Sandbox Code Playgroud)

python plot text label matplotlib

4
推荐指数
1
解决办法
4231
查看次数

熊猫:从timedelta中提取小时

此答案说明了如何在Pandas中将整数转换为每小时的时间步长。我需要做相反的事情。

我的数据框df1

   A
0  02:00:00
1  01:00:00
2  02:00:00
3  03:00:00
Run Code Online (Sandbox Code Playgroud)

我的预期数据框df1

   A         B
0  02:00:00  2
1  01:00:00  1
2  02:00:00  2
3  03:00:00  3
Run Code Online (Sandbox Code Playgroud)

我正在尝试:

df1['B'] = df1['A'].astype(int)
Run Code Online (Sandbox Code Playgroud)

之所以失败,是因为: TypeError: cannot astype a timedelta from [timedelta64[ns]] to [int32]

做这个的最好方式是什么?

编辑

如果我尝试df['B'] = df['A'].dt.hour,那么我得到: AttributeError: 'TimedeltaProperties' object has no attribute 'hour'

python delta pandas timestep

4
推荐指数
2
解决办法
2535
查看次数

在Python中将曲线拟合到数据集

我有一个带有两个数据集的图,它产生一个轻微的梯度,其中最佳拟合曲线可能是过度绘制的.

目前我只是设法得到最合适的直线.我理解scipy.optimize.curve_fit应该能够帮助我,但这需要我知道我想要过度绘制的功能(我认为).

以下是我的代码和图表.如何为这些数据集创建曲线图?

plt.figure(figsize=(15,6.6))
pl.subplot(1,2,1) 
plt.plot(gg,AA, 'kx')
plt.xlabel('x')
plt.ylabel('y')
plt.gca().invert_yaxis()
y=AA
x=gg
fit=pl.polyfit(x,y,1)
#slope, fit_fn=pl.poly1d(fit)
fit_fn=pl.poly1d(fit)
scat=pl.plot(x,y, 'kx', x,fit_fn(x), '-b' )


pl.subplot(1,2,2) 
pl.plot(LL,pp, 'kx')#shows points with no removal or bestfit
plt.gca().invert_yaxis()

plt.savefig('1.jpg')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我的情节左边的那条线条最合适的直线

应该注意的是,可能没有曲线,但我想发现是否有适合的曲线.

python numpy matplotlib scipy

3
推荐指数
1
解决办法
9850
查看次数

Matplotlib:字幕位置错误,图例不可见

我有五个列表,我打算在两个单独的子图中绘制.在子图1中我想要列表1,2,3和4; 在子图2中我想要列表4和5.这些是列表和event_index用于设置x label.

event_index=['event 1','event 2','event 3','event 4','event 5','event 6','event 7','event 8','event 9','event 10']
list1 = [0.7,0.8,0.8,0.9,0.8,0.7,0.6,0.9,1.0,0.9]
list2 = [0.2,0.3,0.1,0.0,0.2,0.1,0.3,0.1,0.2,0.1]
list3 = [0.4,0.6,0.4,0.5,0.4,0.5,0.6,0.4,0.5,0.4]
list4 = [78,87,77,65,89,98,74,94,85,73]
list5 = [16,44,14,55,34,36,76,54,43,32]
Run Code Online (Sandbox Code Playgroud)

为了生成两个子图,我使用以下代码:

fig = plt.figure() #Creates a new figure
ax1 = fig.add_subplot(211) #First subplot: list 1,2,3, and 4
ax2 = ax1.twinx() #Creates a twin y-axis for plotting the values of list 4
line1 = ax1.plot(list1,'bo-',label='list1') #Plotting list1
line2 = ax1.plot(list2,'go-',label='list2') #Plotting list2
line3 = ax1.plot(list3,'ro-',label='list3') #Plotting list3
line4 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib subtitle subplot

3
推荐指数
1
解决办法
1万
查看次数

将背景图像添加到3D图

此处已触及该主题,但未提供有关如何创建3D图并将图像以(x,y)指定z高度插入平面的指示。

因此,为了提出一个简单且可复制的案例,假设我使用以下代码创建了一个3D图mplot3d

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.winter,
                       linewidth=0, antialiased=True)
ax.set_zlim(-1.01, 1.01)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

plt.show()
Run Code Online (Sandbox Code Playgroud)

在视觉上,我们有: 在此处输入图片说明

在级别上z=min(z)-1,这里-1是避免重叠的视觉偏移, …

python 3d image matplotlib mplot3d

3
推荐指数
1
解决办法
2263
查看次数

Python:对dict的值进行排序,并提取与最后n个值对应的键

假设您有这样的字典,但不一定按其值排序:

d={a:2,k:2,c:11,f:17,e:84,y:86}

并且您希望将值从最大到最小排序:

order=sorted(d.values(),reverse=True)

这会给你:

order=[86,84,17,11,2,2]

现在,我们来看看最后两个元素:

b=order[-2:]=[2,2]

什么是检索db对应的键的Pythonic方法?在这种情况下,预期结果将是:

ans=[a,k]

python sorting dictionary

3
推荐指数
1
解决办法
1200
查看次数

Pandas:如果特定列满足特定条件,则选择行

说我有这个数据框df

    A   B   C
0   1   1   2
1   2   2   2
2   1   3   1
3   4   5   2
Run Code Online (Sandbox Code Playgroud)

说你要选择所有的行哪列C>1。如果我这样做:

newdf=df['C']>1
Run Code Online (Sandbox Code Playgroud)

我只获得TrueFalse在结果df中。相反,在给出的示例中,我想要这个结果:

    A   B   C
0   1   1   2
1   2   2   2
3   4   5   2
Run Code Online (Sandbox Code Playgroud)

你会怎么办?你建议使用iloc吗?

python slice dataframe pandas

3
推荐指数
2
解决办法
6043
查看次数

如何将年,月和日列合并到单个日期时间列?

我有以下数据帧df:

        id  lat        lon      year    month   day         
0       381 53.30660   -0.54649 2004    1       2       
1       381 53.30660   -0.54649 2004    1       3            
2       381 53.30660   -0.54649 2004    1       4   
Run Code Online (Sandbox Code Playgroud)

我想创建一个新列df['Date'],其中year,根据格式组合month,和dayyyyy-m-d.

这篇文章后,我做了:

`df['Date']=pd.to_datetime(df['year']*10000000000
                           +df['month']*100000000
                           +df['day']*1000000,
                           format='%Y-%m-%d%')`
Run Code Online (Sandbox Code Playgroud)

结果不是我所期望的,因为它从1970年开始而不是2004年,它还包含小时标记,我没有指定:

        id  lat        lon      year    month   day  Date           
0       381 53.30660   -0.54649 2004    1       2    1970-01-01 05:34:00.102    
1       381 53.30660   -0.54649 2004    1       3    1970-01-01 05:34:00.103         
2       381 53.30660   -0.54649 2004    1 …
Run Code Online (Sandbox Code Playgroud)

python datetime timestamp date pandas

3
推荐指数
2
解决办法
1192
查看次数

Pandas:添加具有满足条件的元素的渐进计数的列

给定以下数据框df

df = pd.DataFrame({'A':['Tony', 'Mike', 'Jen', 'Anna'], 'B': ['no', 'yes', 'no', 'yes']})

    A    B
0   Tony no 
1   Mike yes
2   Jen  no
3   Anna yes
Run Code Online (Sandbox Code Playgroud)

我想添加另一列,该列逐渐对元素进行计数df['B']='yes'

    A    B   C
0   Tony no  0
1   Mike yes 1
2   Jen  no  0
3   Anna yes 2
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python conditional-statements pandas pandas-groupby

3
推荐指数
1
解决办法
872
查看次数