在这篇文章中,我们将为您详细介绍__contains__如何用于ndarray?的内容,并且讨论关于ndarrayisnotc-contiguous的相关问题。此外,我们还会涉及一些关于array_c
在这篇文章中,我们将为您详细介绍__contains__如何用于ndarray?的内容,并且讨论关于ndarray is not c-contiguous的相关问题。此外,我们还会涉及一些关于array_contains 分析函数使用演示、AttributeError:类型对象“ numpy.ndarray”没有属性“ __array_function__”、Cocos2d-JS____CocosDenshion引擎、Cocos2d-js_____cc.Loader的知识,以帮助您更全面地了解这个主题。
本文目录一览:- __contains__如何用于ndarray?(ndarray is not c-contiguous)
- array_contains 分析函数使用演示
- AttributeError:类型对象“ numpy.ndarray”没有属性“ __array_function__”
- Cocos2d-JS____CocosDenshion引擎
- Cocos2d-js_____cc.Loader
__contains__如何用于ndarray?(ndarray is not c-contiguous)
>>> x = numpy.array([[1, 2],... [3, 4],... [5, 6]])>>> [1, 7] in xTrue>>> [1, 2] in xTrue>>> [1, 6] in xTrue>>> [2, 6] in xTrue>>> [3, 6] in xTrue>>> [2, 3] in xFalse>>> [2, 1] in xFalse>>> [1, 2, 3] in xFalse>>> [1, 3, 5] in xFalse
我不知道如何__contains__
为ndarrays。我找不到相关的文档。它是如何工作的?并且在任何地方都有记录吗?
答案1
小编典典我发现源ndarray.__contains__
中numpy/core/src/multiarray/sequence.c
。作为消息来源的评论,
thing in x
相当于
(x == thing).any()
用于ndarrayx
,无论尺寸x
和thing
。仅当thing
是标量时才有意义;广播的结果thing
不是标量时,会导致我观察到怪异的结果,以及array([1,2, 3]) in array(1)
我没想尝试的奇怪之处。确切的来源是
static intarray_contains(PyArrayObject *self, PyObject *el){ /* equivalent to (self == el).any() */ int ret; PyObject *res, *any; res = PyArray_EnsureAnyArray(PyObject_RichCompare((PyObject *)self, el, Py_EQ)); if (res == NULL) { return -1; } any = PyArray_Any((PyArrayObject *)res, NPY_MAXDIMS, NULL); Py_DECREF(res); ret = PyObject_IsTrue(any); Py_DECREF(any); return ret;}
array_contains 分析函数使用演示
Hive 中的 array_contains 函数与 SQL 中的 in 关键字 操作类似,用于判定 包含(array_contains)或不包含(!array_contains)关系。与 in 不同的是 array_contains 可以用于判断一张表中同一个 id 的多条记录中的同一字段是否包含指定的一个或多个值。需要注意字段类型保持一致,若不一致则需要进行强制类型转换。比如下面这个案例,这段脚本用于统计每个会员名下有多少张 VIP 卡及当前是否是 VIP 有效会员,一个会员可能同时持有多张 VIP 卡。
-- ========================================================================================
-- Purpose : array_contains 分析函数使用演示
------------------------------------ Change Log -------------------------------------------
-- Date Generated Updated By Description
-------------------------------------------------------------------------------------------
-- 2018-12-26 shujuxiong Initial Version
-- ========================================================================================
-- status_code枚举:1生效中 2冻结中 3失效中
select
user_id
,count(*) as card_number -- 使用过的卡数
-- 只要任意一张卡有效即判定为VIP有效
,case when array_contains(collect_set(status_code),cast(1 as smallint)) then 1 else 0 end effective_flag -- 卡有效标识
from edw_users.dwd_edw_user_vipcard_df -- 用户VIP卡购买使用全量表
where dt = ''${dt}''
and user_id > 0
and deleted_flag = ''N''
group by user_id
;
AttributeError:类型对象“ numpy.ndarray”没有属性“ __array_function__”
我将numpy升级到最新版本,现在在导入numpy时遇到以下错误:
AttributeError:类型对象“ numpy.ndarray”没有属性“ array_function ”
我正在使用numpy 1.16版。
答案1
小编典典卸载所有使用的Numpy安装
pip uninstall numpy
对于python3
pip3 uninstall numpy
由于可能安装了多个版本的numpy,因此您可能需要多次运行uninstall命令。然后跑
pip install numpy
Cocos2d-JS____CocosDenshion引擎
点击打开链接
Cocos2d-JS提供了一个音频CocosDenshion引擎。具体使用的API是cc.AudioEngine。cc.AudioEngine有几个常用的函数:
playMusic(url,loop)。播放背景音乐,参数url是播放文件的路径,参数loop控制是否循环播放,缺省情况下false。
stopMusic()。停止播放背景音乐。
pauseMusic()。暂停播放背景音乐。
resumeMusic ()。继续播放背景音乐。
isMusicPlaying()。判断背景音乐是否在播放。
playEffect (url,loop)。播放音效,参数同playMusic函数。
pauseEffect(audioID)。暂停播放音效,参数audioID是playEffect函数返回ID。
pauseAllEffects ()。暂停所有播放音效。
resumeEffect (audioID)。继续播放音效,参数audioID是playEffect函数返回ID。
resumeAllEffects ()。继续播放所有音效。
stopEffect(audioID)。停止播放音效,参数audioID是playEffect函数返回ID。
stopAllEffects ()。停止所有播放音效。
音频文件的预处理
无论是播放背景音乐还是音效在播放之前进行预处理是有必要的。如果不进预处理,则会发现在第一次播放这个音频文件时候感觉很“卡”,用户体验不好。Cocos2d-JS中提供了资源文件的预处理功能。
通过模板生成的Cocos2d-JS工程中有一个main.js,它的内容如下:
1
2
3
4
5
6
7
8
9
|
cc.game.onStart=function(){
cc.view.setDesignResolutionSize(1136,640,cc.ResolutionPolicy.EXACT_FIT);
cc.view.resizeWithbrowserSize(
true
);
//loadresources
cc.LoaderScene.preload(g_resources,function(){①
cc.director.runScene(
new
HelloWorldScene());
},
this
);
};
cc.game.run();
|
其中cc.LoaderScene.preload函数可以预处理一些资源,其中g_resources是资源文件集合变量,它是在resource.js文件中定义的,resource.js文件的内容如下:
varres={
//image
On_png:
"res/on.png"
,
Off_png:
"res/off.png"
background_png:
"res/background.png"
start_up_png:
"res/start-up.png"
start_down_png:
"res/start-down.png"
setting_up_png:
"res/setting-up.png"
setting_down_png:
"res/setting-down.png"
help_up_png:
"res/help-up.png"
help_down_png:
"res/help-down.png"
setting_back_png:
"res/setting-back.png"
ok_down_png:
"res/ok-down.png"
ok_up_png:
"res/ok-up.png"
//plist
//fnt
//tmx
//bgm
//music
bgMusicSynth_mp3:
'res/sound/Synth.mp3'
bgMusicJazz_mp3:
'res/sound/Jazz.mp3'
②
//effect
};
varg_resources=[③
];
for
(variinres){④
g_resources.push(res[i]);
}
|
上述代码第③行定义了资源集合变量g_resources,其中的第④行的for循环是将背景音乐资源文件添加到g_resources资源集合变量中。注意为了防止硬编码,我们需要在res变量中添加资源别名的声明见代码第①行和第②行。
通过的上述设置游戏应用在运行的时候加载所有资源文件,包括图片、声音、属性列表文件(plist)、字体文件(fnt)、瓦片地图文件(tmx)等。
播放背景音乐
背景音乐的播放与停止实例代码如下:
cc.audioEngine.playMusic(res.bgMusicSynth_mp3,monospace!important; font-size:1em!important; min-height:inherit!important; background:none!important">);
cc.audioEngine.stopMusic(res.bgMusicSynth_mp3);
|
其中cc.audioEngine是cc.AudioEngine类创建的对象。
背景音乐的播放代码放置到什么地方比较适合呢?例如:在Setting场景中,主要代码如下:
varSettingLayer=cc.Layer.extend({
ctor:function(){
._super();
cc.
log
(
"SettingLayerinit"
);
//播放代码①
return
;
onEnter:function(){
._super();
"SettingLayeronEnter"
);
//播放代码②
onEnterTransitionDidFinish:function(){
._super();
"SettingLayeronEnterTransitionDidFinish"
);
//播放代码③
onExit:function(){
._super();
"SettingLayeronExit"
);
//播放代码④
onExitTransitionDidStart:function(){
._super();
//播放代码⑤
}
});
|
关于播放背景音乐,理论上我们是可以将播放代码cc.audioEngine.playMusic(res.bgMusicSynth_mp3,true)放置到三个位置(代码中的①、②、③)。下面我们分别分析一下它们还有什么不同。
1、代码放到第①行
代码放到第①行(即在ctor构造函数),如果前面场景中没有调用背景音乐停止语句,则可以正常播放背景音乐。但是如果前面场景层HelloWorldLayer onExit函数有调用背景音乐停止语句,那么会出现背景音乐播放几秒钟后停止。
为了解释这个现象,我们可以参考一下多场景切换生命周期的相关内容。使用pushScene函数从实现HelloWorld场景进入Setting场景,生命周期函数调用顺序如下图所示。
生命周期事件顺序
从图中可见,HelloWorldLayer onExit调用是在SettingLayer init(ctor构造函数)之后,这样当我们在SettingLayer init中开始播放背景音乐后,过一会调用HelloWorldLayer onExit停止背景音乐播放,这样问题就出现了。
注意 无论播放和停止的是否是同一个文件,都会出现个问题。
2、代码放到第②行
代码放到第②行(即在SettingLayer onEnter函数),如果前面场景中没有调用背景音乐停止语句,则可以正常播放背景音乐。如果前面的场景层HelloWorldLayer onExit函数有背景音乐停止语句,也会出现背景音乐播放几秒钟后停止。原因与代码放到第①行情况一样。
3、代码放到第③行
我们推荐代码放到第③行代码位置,因为onEnterTransitionDidFinish函数是在进入层而且过渡动画结束时候调用,代码放到这里不用考虑中前面场景是否有调用背景音乐停止语句。而且用户也不会先听到声音,后出现界面现象。
综上所述,是否能够成功播放背景音乐,前面场景是否有调用背景音乐停止语句有关,也与当前场景中播放代码在哪个函数里有关。如果前面场景没有调用背景音乐停止语句,问题也就简单了,我们可以将播放代码放置在代码①、②、③任何一处。但是如果前面场景调用背景音乐停止语句,在onEnterTransitionDidFinish函数播放背景音乐会更好一些。
停止播放背景音乐
停止背景音乐播放代码放置到什么地方比较适合呢?例如:在HelloWorld场景中,主要代码如下:
varHelloWorldLayer=cc.Layer.extend({
"HelloWorldLayerinit"
onEnter:function(){
._super();
"HelloWorldLayeronEnter"
);
onEnterTransitionDidFinish:function(){
._super();
"HelloWorldLayeronEnterTransitionDidFinish"
);
onExit:function(){
._super();
"HelloWorldLayeronExit"
);
//停止播放代码①
onExitTransitionDidStart:function(){
._super();
//停止播放代码②
}
关于停止背景音乐播放,理论上我们是可以将停止播放代码cc.audioEngine.stopMusic(res.bgMusicSynth_mp3)放置到两个位置(代码中的①和②)。下面我们分别分析一下它们还有什么不同。
|
Cocos2d-js_____cc.Loader
概述
原来的cc.Loader
被改造为一个单例cc.loader
,采用了插件机制设计,让loader做更纯粹的事。
各种资源类型的loader可以在外部注册进来,而不是直接将所有的代码杂揉在cc.Loader
中,更好的方便管理以及用户自定义loader的创建。
cc.loader
中包含了一些网络资源获取的基本api,例如加载js、加载image等。
API描述
(注:以下描述中,全路径的意思为 "资源的根路径" + "资源路径",
例如设置图片资源根路径(cc.loader.resPath)为"res",图片资源路径为"a.png",
那么全路径为"res/a.png",非全路径为"a.png"。)
resPath
资源的根路径(音频资源除外)。
audioPath
音频资源的根路径。
getXMLHttpRequest
获取XMLHttpRequest对象。
loadJs
加载js文件。
参数: url 资源路径(注意,必须是全路径) cb 回调函数 返回值: 无
- 用法1:
- 用法2:
loadJsWithImg
用法同loadJs
,只是在加载js文件的时候会显示一个loading的图片而已。
loadTxt
加载文本资源。
用法:
loadImg
加载图片资源。
loadBinary
加载二进制文件(异步)。
loadBinarySync
加载二进制文件(同步,不推荐使用)。
getUrl
获取到资源全路径。
cc.loader.getUrl("res","a.png");//-->"res/a.png" cc.loader.getUrl("a.png");//(set cc.loader.resPath = "res")--->"res/a.png"。
load
加载资源的入口api。相当于原来的cc.Loader.preload
。
var res = ["res/a.png","res/a.plist","audio/b.mp3"]; var testTarget = { name : "the name is testTarget",trigger : function(){...},cb : function(err){...} }; var option = { trigger : testTarget.trigger,triggerTarget : testTarget,cbTarget : testTarget } //用法1: cc.loader.load(res,option,function(err){ if(err) return console.log("load Failed"); console.log(this.name);//the name is testTarget }); //用法2: cc.loader.load(res,function(err){ if(err) return console.log("load Failed"); }); //用法3: option.cb = testTarget.cb; cc.loader.load(res,option); //用法4: cc.loader.load(res);
今天的关于__contains__如何用于ndarray?和ndarray is not c-contiguous的分享已经结束,谢谢您的关注,如果想了解更多关于array_contains 分析函数使用演示、AttributeError:类型对象“ numpy.ndarray”没有属性“ __array_function__”、Cocos2d-JS____CocosDenshion引擎、Cocos2d-js_____cc.Loader的相关知识,请在本站进行查询。
本文标签: