我有一个布尔类型的NumPy数组'boolarr'.我想计算其值为的元素数量True
.是否有专门用于此任务的NumPy或Python例程?或者,我是否需要迭代脚本中的元素?
如何使用opam(或其他包管理器)安装特定版本的ocaml编译器(和兼容包)?
我快速浏览了一下opam文档,但是没有找到相关信息.
我需要ocaml编译器(最好是本机代码编译器)来构建unison,一个用于文件同步的软件.我需要使用相同版本的ocaml在两台机器上构建unison,否则unison会发出错误并中止其职责(yiiii!).
我尝试从tar球构建ocaml版本4.04.0,然后使用它来构建unison,但在其中一台机器上,unison的构建失败并显示错误消息,
make[1]: Entering directory '/home/norio/Downloads/unison/unison-2.48.4_expand/src'
ocamlc -o mkProjectInfo unix.cma str.cma mkProjectInfo.ml
File "mkProjectInfo.ml", line 1:
Error: Error while linking /home/norio/Downloads/unison/ocaml_for_unison/lib/ocaml/unix.cma(Unix):
The external function `unix_has_symlink' is not available
if [ -f `which etags` ]; then \
etags *.mli */*.mli *.ml */*.ml */*.m *.c */*.c *.txt \
; fi
make[1]: Leaving directory '/home/norio/Downloads/unison/unison-2.48.4_expand/src'
Run Code Online (Sandbox Code Playgroud)
我不想出发寻求unix_has_symlink
功能,并致力于探索图书馆依赖的沼泽,许多开发人员在文明来临之前已经倒下,并且发明了包裹管理者.
有没有什么,
opam install ocamlc-4.04
和opam install all-packages
?
附录
unix_has_symlink
在运行Linux Mint 18 Cinnamon 64 bit的计算机上观察到错误消息.这个函数是某个unix/linux库的一部分,而不是ocaml包吗?
你知道以下声明是否可以通过fortran 90/95/2003标准之一保证真实吗?"假设一个字符变量的read语句被赋予一个空行(即只包含空格和换行符号).如果格式说明符是星号(*),它继续读取后续行,直到非空白如果格式说明符为'(A)',则将空字符串替换为字符变量."
例如,请查看以下最小程序和输入文件.
程序代码:
PROGRAM chk_read
INTEGER, PARAMETER :: MAXLEN=30
CHARACTER(len=MAXLEN) :: str1, str2
str1='minomonta'
read(*,*) str1
write(*,'(3A)') 'str1_start|', str1, '|str1_end'
str2='minomonta'
read(*,'(A)') str2
write(*,'(3A)') 'str2_start|', str2, '|str2_end'
END PROGRAM chk_read
Run Code Online (Sandbox Code Playgroud)
输入文件:
----'input.dat' content is below this line----
yamanakako
kawaguchiko
----'input.dat' content is above this line----
Run Code Online (Sandbox Code Playgroud)
请注意,'input.dat'中有四行,第一行和第三行是空白的(仅包含空格和换行符).如果我运行程序为
$ ../chk_read < input.dat > output.dat
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
----'output.dat' content is below this line----
str1_start|yamanakako |str1_end
str2_start| |str2_end
----'output.dat' content is above this line----
Run Code Online (Sandbox Code Playgroud)
变量'str1'的第一个读语句似乎是查看'input.dat'的第一行,找到一个空行,移到第二行,找到字符值'yamanakako',并将其存储在'str1'中".
相反,变量'str2'的第二个read语句似乎给出了第三行,它是空白的,并将空行存储在'str2'中,而不是移到第四行.
我尝试用英特尔Fortran(ifort 12.0.4)和GNU Fortran(gfortran 4.5.0)编译程序并得到相同的结果.
稍微讨论一下这个问题的背景:我正在编写一个子程序来读取一个使用空行作为数据块分隔符的数据文件.我想确保在读取数据时丢弃空白行,只留下空白行.我还需要使其标准符合和便携.
谢谢你的帮助.
将intrinsic
关键字添加到use
模块的语句中意味着什么,如下例所示?
use, intrinsic :: iso_c_binding
Run Code Online (Sandbox Code Playgroud)
(来自 7.1 Fortran接口概述,FFTW 3.3.6-pl1)
是否指定应该使用随编译器提供的该名称的模块,即使用户编写了另一个同名模块?
如何在Linux系统上为所有用户添加Matlab搜索路径?
我正在管理一个由几个人共享的Linux计算机.我想在路径上放置一些Matlab*.m文件(例如,/ usr/local/matlab/our_matlab_scripts /),每个人都有读访问权限.我还想将此路径添加到所有用户的Matlab搜索路径中,以便他们可以立即开始使用Matlab文件.
作为单个用户,我了解到我可以通过Matlab'addpath'命令或Matlab的文件菜单添加搜索路径.但是,到目前为止,我找不到一种方法可以立即作为所有当前和未来用户的管理员.
如果你能善意地教我,我将不胜感激.
使用matplotlib,我正在制作一个包含两个Axes对象的图形(即两组xy轴).我想连接两个点 - 一个从一个轴中拾取,另一个从另一个轴中拾取---通过箭头或线.
我试图通过使用annotate()函数和ConnectionPatch对象来做到这一点,但在两种方式中,箭头的一部分被轴的"框架"隐藏.请参阅附图,其中我尝试通过ConnectionPatch对象连接两个轴的原点.
我还附加了用于生成图形的脚本.
有没有办法"提前"箭头(或将轴框架推到后面)?
#!/usr/bin/python
#
# This script was written by Norio TAKEMOTO 2012-5-7
import matplotlib.pyplot as plt
from matplotlib.patches import ConnectionPatch
# creating a figure and axes.
fig=plt.figure(figsize=(10,5))
ax1=plt.axes([0.05,0.15,0.40,0.80])
plt.xticks([0])
plt.yticks([0])
plt.xlim((-1.23, 1.23))
plt.ylim((-2.34, 2.34))
ax2=plt.axes([0.60,0.15, 0.30, 0.30])
plt.xticks([0])
plt.yticks([0])
plt.xlim((-3.45, 3.45))
plt.ylim((-4.56, 4.56))
# trying to connect the point (0,0) in ax1 and the point (0,0) in ax2
# by an arrow, but some part is hidden. I can't find a solution. Let's
# ask …
Run Code Online (Sandbox Code Playgroud) 在下面的简单程序中,我陷入了派生类型的可分配数组成员的分段错误。此分段错误仅在我尝试过的一台计算机(在openSUSE上使用Intel Fortran 14.0.3)上,而在另一台计算机(在Ubuntu上使用Intel Fortran 14.0.2)上则没有。另外,如果我更改程序中的整数参数之一,程序将正常结束。
有人能重现这个问题吗?有人可以告诉我代码有什么问题吗?
以下是三个源代码文件。
main_dbg.f90
..是否发生分段错误取决于n1
and n2
在此文件中的值。
PROGRAM dbg
USE tktype
USE mymodule, ONLY : MyClass, MyClass_constructor
IMPLICIT NONE
INTEGER(I4B) :: n1,n2,n3
TYPE(MyClass) :: o_MyClass
n1=23
n2=32
! .. this does not work.
! n2=31
! .. this works.
n3 = n1*n2
write(*,'(1X,A,I10)') 'n1=', n1
write(*,'(1X,A,I10)') 'n2=', n2
write(*,'(1X,A,I10)') 'n3=', n3
o_MyClass = MyClass_constructor(n1, n2, n3)
call o_MyClass%destructor()
write(*,*) '***************************'
write(*,*) ' Normal End :) '
write(*,*) '***************************'
END PROGRAM dbg
Run Code Online (Sandbox Code Playgroud)
strange.f90
..分段错误发生forall …
fortran memory-management segmentation-fault allocatable-array
如果我有一个旧版本的python(例如python3.4)和pip这个版本的python,我可以通过pip安装更新版本的python(例如python3.6)吗?换句话说,我可以这样做吗?
pip install python3.6
Run Code Online (Sandbox Code Playgroud) 我想计算矢量,
s = AB u,
其中s和u是N维复矢量,A是N×M复合矩阵,B是M-by-N复矩阵.当A,B和u的元素表示为浮点数时,以下哪两种方法具有更好的准确度(更高有效位数)?
(1)首先计算B u.
首先进行矩阵向量乘法,
y = B u
然后,另一个矩阵 - 向量乘法
s = A y
(2)首先计算AB.
首先进行矩阵 - 矩阵乘法,
C = AB
然后,矩阵向量乘法
s = C u
有没有已知的一般规则?
顺便说一句,我知道方法(1)比方法(2)更有效.
floating-point linear-algebra significant-digits numerical-analysis matrix-multiplication
在 fortran 2003 中,是否可以定义具有抽象类型组件的派生类型?例如,如下所示,我想定义一个Sup
具有type组件o_Abst
的Abst
类型。
TYPE, ABSTRACT :: Abst
CONTAINS
PROCEDURE(some_proc), deferred, pass :: some_proc
..
END TYPE Abst
TYPE :: Sup
PRIVATE
CLASS(Abst) :: o_Abst
..
CONTAINS
PROCEDURE :: another_proc
END TYPE Sup
Run Code Online (Sandbox Code Playgroud)
我已经遇到的一个问题是为Sup
类型对象编写构造函数。我无法o_Abst
通过内部赋值为组件赋值=
(英特尔编译器说,“在内部赋值语句中,变量不应是多态的。”)。或者我不能为Abst
类型对象编写构造函数,因为据我所知,如果传递的对象虚拟参数以外的参数是抽象类型,则无法正确覆盖延迟的类型绑定过程。
我也很高兴听到避免使用类似Sup
. 如果使用抽象类型的组件来定义类型很诱人,那么一般有哪些替代策略?
Fortran 中有一个内在函数来计算复数|z|^2
的平方模吗z
?
如果没有,是否有比以下更简单或更好的计算方法?
REAL(z, precision_specifier)**2 + AIMAG(z)**2
Run Code Online (Sandbox Code Playgroud)