我需要从给定列表中选择一些元素,知道它们的索引.假设我想创建一个新列表,其中包含索引为1,2,5的元素,来自给定列表[-2,1,5,3,8,5,6].我做的是:
a = [-2,1,5,3,8,5,6]
b = [1,2,5]
c = [ a[i] for i in b]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?像c = a [b]之类的东西?
我想在轴上有一个小刻度,但只显示主刻度标签.例如,次要刻度是[19,20,21,... 40,41],主刻度标签是[20,25,30,35,40].我该怎么做?下面的代码没有完成这项工作.我知道可以像这个例子一样使用MultipleLocator,FormatStrFormatter .但是,我在轴上的值有点"奇怪",起始值为19(不是20),结束值为41,这在使用MultipleLocator时会造成困难.
import numpy as np
from matplotlib import pylab as plt
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(19.,41,23)
y = x**2
ax.plot(x,y)
ax.set_xticks(x)
ax.set_xticklabels(x, minor=False)
plt.show()
Run Code Online (Sandbox Code Playgroud)
它给了我以下情节:

或者ax.set_xticklabels([20, 25, 30, 35, 40], minor=False)
给我另一个情节:
如何更改我的代码以获得我需要的内容.非常感谢你的帮助!
我试图DATA在Fortran 90中使用语句初始化一个数组.代码如下:
PROGRAM dt_state
IMPLICIT NONE
INTEGER :: a(4), b(2:2), c(10)
DATA a/4*0/
WRITE (6,*) a(:)
DATA a/4,3,2,1/
WRITE (6,*) a(:)
END PROGRAM dt_state
Run Code Online (Sandbox Code Playgroud)
我预计屏幕上的结果将是0 0 0 0和4 3 2 1.但是,我得到的是0 0 0 0和0 0 0 0.它意味着DATA语句不会覆盖值a,是吗?
我为压缩文件编写了一个函数如下:
def gzip(filename):
'''Gzip the given file and then remove original file.'''
r_file = open(filename, 'r')
w_file = gzip.GzipFile(filename + '.gz', 'w', 9)
w_file.write(r_file.read())
w_file.flush()
w_file.close()
r_file.close()
os.unlink(filename)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的程序时,我收到错误:
'function'对象没有属性'GzipFile'.
我做错了什么?先谢谢!
我是Fortran的新手.我正在Fortran 90中编写一个程序来获取数组的非零元素,并使用指针函数将它们放入一个新数组中,如下所示:
program prog
implicit none
integer, target :: a(5)
integer :: i
integer, pointer :: nz(:)
a(1) = 1
a(2) = 0
a(3) = 0
a(4) = 2
a(5) = 3
nz => non_zeros(a)
do i=1, size(nz)
write(*,*) nz(i)
end do
contains
function non_zeros(a)
integer, target :: a(:)
integer, pointer:: non_zeros(:)
integer :: n, i, j
n = count(a .ne. 0)
allocate(non_zeros(n))
j = 0
do i=1, m
if (a(i) .ne. 0) then
j = j + 1
non_zeros(j) …Run Code Online (Sandbox Code Playgroud)